From 900dbd1cbe7d747c844a285959e507cf9f5de2bd Mon Sep 17 00:00:00 2001 From: mateai <83303230+mateai@users.noreply.github.com> Date: Wed, 20 Sep 2023 06:32:44 +0300 Subject: [PATCH] Substring support for similarity_search_with_score (#10746) **Description:** Possible to filter with substrings in similarity_search_with_score, for example: filter={'user_id': {'substring': 'user'}} --------- Co-authored-by: Harrison Chase --- libs/langchain/langchain/vectorstores/pgembedding.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libs/langchain/langchain/vectorstores/pgembedding.py b/libs/langchain/langchain/vectorstores/pgembedding.py index bb1bd2a4ce..d2ee868b8b 100644 --- a/libs/langchain/langchain/vectorstores/pgembedding.py +++ b/libs/langchain/langchain/vectorstores/pgembedding.py @@ -360,6 +360,13 @@ class PGEmbedding(VectorStore): value_case_insensitive[IN] ) filter_clauses.append(filter_by_metadata) + elif isinstance(value, dict) and "substring" in map( + str.lower, value + ): + filter_by_metadata = EmbeddingStore.cmetadata[key].astext.ilike( + f"%{value['substring']}%" + ) + filter_clauses.append(filter_by_metadata) else: filter_by_metadata = EmbeddingStore.cmetadata[ key