Skip to content

Commit b5eb915

Browse files
Added filter argument to pinecone queries, fixes #600 (#601)
Added filter argument to similarity_search() and similarity_search_with_score() Co-authored-by: Sam Cartford (MBP) <[email protected]>
1 parent c4c6bf6 commit b5eb915

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

langchain/vectorstores/pinecone.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,15 @@ def similarity_search_with_score(
8080
self,
8181
query: str,
8282
k: int = 5,
83+
filter: Optional[dict] = None,
8384
namespace: Optional[str] = None,
8485
) -> List[Tuple[Document, float]]:
8586
"""Return pinecone documents most similar to query, along with scores.
8687
8788
Args:
8889
query: Text to look up documents similar to.
8990
k: Number of Documents to return. Defaults to 4.
91+
filter: Dictionary of argument(s) to filter on metadata
9092
namespace: Namespace to search in. Default will search in '' namespace.
9193
9294
Returns:
@@ -95,7 +97,11 @@ def similarity_search_with_score(
9597
query_obj = self._embedding_function(query)
9698
docs = []
9799
results = self._index.query(
98-
[query_obj], top_k=k, include_metadata=True, namespace=namespace
100+
[query_obj],
101+
top_k=k,
102+
include_metadata=True,
103+
namespace=namespace,
104+
filter=filter,
99105
)
100106
for res in results["matches"]:
101107
metadata = res["metadata"]
@@ -107,13 +113,15 @@ def similarity_search(
107113
self,
108114
query: str,
109115
k: int = 5,
116+
filter: Optional[dict] = None,
110117
namespace: Optional[str] = None,
111118
) -> List[Document]:
112119
"""Return pinecone documents most similar to query.
113120
114121
Args:
115122
query: Text to look up documents similar to.
116123
k: Number of Documents to return. Defaults to 4.
124+
filter: Dictionary of argument(s) to filter on metadata
117125
namespace: Namespace to search in. Default will search in '' namespace.
118126
119127
Returns:
@@ -122,7 +130,11 @@ def similarity_search(
122130
query_obj = self._embedding_function(query)
123131
docs = []
124132
results = self._index.query(
125-
[query_obj], top_k=k, include_metadata=True, namespace=namespace
133+
[query_obj],
134+
top_k=k,
135+
include_metadata=True,
136+
namespace=namespace,
137+
filter=filter,
126138
)
127139
for res in results["matches"]:
128140
metadata = res["metadata"]

0 commit comments

Comments
 (0)