Making it possible to use "certainty" as a parameter for the weaviate similarity_search (#1218)

Checking if weaviate similarity_search kwargs contains "certainty" and
use it accordingly. The minimal level of certainty must be a float, and
it is computed by normalized distance.
docker-utility-pexpect
Marc Puig 1 year ago committed by GitHub
parent 42b892c21b
commit 3989c793fd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -268,12 +268,48 @@
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"id": "7fb44daa", "source": [
"metadata": {}, "## Chat Vector DB with `search_distance`\n",
"If you are using a vector store that supports filtering by search distance, you can add a threshold value parameter."
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": null,
"outputs": [],
"source": [
"vectordbkwargs = {\"search_distance\": 0.9}"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": null,
"outputs": [],
"source": [
"qa = ChatVectorDBChain.from_llm(OpenAI(temperature=0), vectorstore, return_source_documents=True)\n",
"chat_history = []\n",
"query = \"What did the president say about Ketanji Brown Jackson\"\n",
"result = qa({\"question\": query, \"chat_history\": chat_history, \"vectordbkwargs\": vectordbkwargs})"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "markdown",
"source": [ "source": [
"## Chat Vector DB with `map_reduce`\n", "## Chat Vector DB with `map_reduce`\n",
"We can also use different types of combine document chains with the Chat Vector DB chain." "We can also use different types of combine document chains with the Chat Vector DB chain."
] ],
"metadata": {
"collapsed": false
}
}, },
{ {
"cell_type": "code", "cell_type": "code",
@ -486,7 +522,7 @@
"source": [ "source": [
"chat_history = [(query, result[\"answer\"])]\n", "chat_history = [(query, result[\"answer\"])]\n",
"query = \"Did he mention who she suceeded\"\n", "query = \"Did he mention who she suceeded\"\n",
"result = qa({\"question\": query, \"chat_history\": chat_history})" "result = qa({\"question\": query, \"chat_history\": chat_history})\n"
] ]
} }
], ],

@ -1,7 +1,7 @@
"""Wrapper around weaviate vector database.""" """Wrapper around weaviate vector database."""
from __future__ import annotations from __future__ import annotations
from typing import Any, Iterable, List, Optional from typing import Any, Dict, Iterable, List, Optional
from uuid import uuid4 from uuid import uuid4
from langchain.docstore.document import Document from langchain.docstore.document import Document
@ -78,7 +78,9 @@ class Weaviate(VectorStore):
self, query: str, k: int = 4, **kwargs: Any self, query: str, k: int = 4, **kwargs: Any
) -> List[Document]: ) -> List[Document]:
"""Look up similar documents in weaviate.""" """Look up similar documents in weaviate."""
content = {"concepts": [query]} content: Dict[str, Any] = {"concepts": [query]}
if kwargs.get("search_distance"):
content["certainty"] = kwargs.get("search_distance")
query_obj = self._client.query.get(self._index_name, self._query_attrs) query_obj = self._client.query.get(self._index_name, self._query_attrs)
result = query_obj.with_near_text(content).with_limit(k).do() result = query_obj.with_near_text(content).with_limit(k).do()
docs = [] docs = []

Loading…
Cancel
Save