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) <cartford@hey.com>
This commit is contained in:
babbldev 2023-01-12 23:15:51 -06:00 committed by GitHub
parent c4c6bf6e6e
commit b5eb91536a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -80,6 +80,7 @@ class Pinecone(VectorStore):
self, self,
query: str, query: str,
k: int = 5, k: int = 5,
filter: Optional[dict] = None,
namespace: Optional[str] = None, namespace: Optional[str] = None,
) -> List[Tuple[Document, float]]: ) -> List[Tuple[Document, float]]:
"""Return pinecone documents most similar to query, along with scores. """Return pinecone documents most similar to query, along with scores.
@ -87,6 +88,7 @@ class Pinecone(VectorStore):
Args: Args:
query: Text to look up documents similar to. query: Text to look up documents similar to.
k: Number of Documents to return. Defaults to 4. k: Number of Documents to return. Defaults to 4.
filter: Dictionary of argument(s) to filter on metadata
namespace: Namespace to search in. Default will search in '' namespace. namespace: Namespace to search in. Default will search in '' namespace.
Returns: Returns:
@ -95,7 +97,11 @@ class Pinecone(VectorStore):
query_obj = self._embedding_function(query) query_obj = self._embedding_function(query)
docs = [] docs = []
results = self._index.query( results = self._index.query(
[query_obj], top_k=k, include_metadata=True, namespace=namespace [query_obj],
top_k=k,
include_metadata=True,
namespace=namespace,
filter=filter,
) )
for res in results["matches"]: for res in results["matches"]:
metadata = res["metadata"] metadata = res["metadata"]
@ -107,6 +113,7 @@ class Pinecone(VectorStore):
self, self,
query: str, query: str,
k: int = 5, k: int = 5,
filter: Optional[dict] = None,
namespace: Optional[str] = None, namespace: Optional[str] = None,
) -> List[Document]: ) -> List[Document]:
"""Return pinecone documents most similar to query. """Return pinecone documents most similar to query.
@ -114,6 +121,7 @@ class Pinecone(VectorStore):
Args: Args:
query: Text to look up documents similar to. query: Text to look up documents similar to.
k: Number of Documents to return. Defaults to 4. k: Number of Documents to return. Defaults to 4.
filter: Dictionary of argument(s) to filter on metadata
namespace: Namespace to search in. Default will search in '' namespace. namespace: Namespace to search in. Default will search in '' namespace.
Returns: Returns:
@ -122,7 +130,11 @@ class Pinecone(VectorStore):
query_obj = self._embedding_function(query) query_obj = self._embedding_function(query)
docs = [] docs = []
results = self._index.query( results = self._index.query(
[query_obj], top_k=k, include_metadata=True, namespace=namespace [query_obj],
top_k=k,
include_metadata=True,
namespace=namespace,
filter=filter,
) )
for res in results["matches"]: for res in results["matches"]:
metadata = res["metadata"] metadata = res["metadata"]