mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-14 02:55:54 +08:00
fix weaviate hybrid search issue (#1600)
Co-authored-by: jyong <jyong@dify.ai>
This commit is contained in:
parent
9587479b76
commit
b930716745
@ -111,7 +111,7 @@ class WeaviateVectorIndex(BaseVectorIndex):
|
|||||||
if self._vector_store:
|
if self._vector_store:
|
||||||
return self._vector_store
|
return self._vector_store
|
||||||
|
|
||||||
attributes = ['doc_id', 'dataset_id', 'document_id']
|
attributes = ['doc_id', 'dataset_id', 'document_id', 'doc_hash']
|
||||||
if self._is_origin():
|
if self._is_origin():
|
||||||
attributes = ['doc_id']
|
attributes = ['doc_id']
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ def _create_weaviate_client(**kwargs: Any) -> Any:
|
|||||||
|
|
||||||
|
|
||||||
def _default_score_normalizer(val: float) -> float:
|
def _default_score_normalizer(val: float) -> float:
|
||||||
return 1 - 1 / (1 + np.exp(val))
|
return 1 - val
|
||||||
|
|
||||||
|
|
||||||
def _json_serializable(value: Any) -> Any:
|
def _json_serializable(value: Any) -> Any:
|
||||||
@ -243,7 +243,8 @@ class Weaviate(VectorStore):
|
|||||||
query_obj = query_obj.with_where(kwargs.get("where_filter"))
|
query_obj = query_obj.with_where(kwargs.get("where_filter"))
|
||||||
if kwargs.get("additional"):
|
if kwargs.get("additional"):
|
||||||
query_obj = query_obj.with_additional(kwargs.get("additional"))
|
query_obj = query_obj.with_additional(kwargs.get("additional"))
|
||||||
result = query_obj.with_bm25(query=content).with_limit(k).do()
|
properties = ['text', 'dataset_id', 'doc_hash', 'doc_id', 'document_id']
|
||||||
|
result = query_obj.with_bm25(query=query, properties=properties).with_limit(k).do()
|
||||||
if "errors" in result:
|
if "errors" in result:
|
||||||
raise ValueError(f"Error during query: {result['errors']}")
|
raise ValueError(f"Error during query: {result['errors']}")
|
||||||
docs = []
|
docs = []
|
||||||
@ -380,14 +381,14 @@ class Weaviate(VectorStore):
|
|||||||
result = (
|
result = (
|
||||||
query_obj.with_near_vector(vector)
|
query_obj.with_near_vector(vector)
|
||||||
.with_limit(k)
|
.with_limit(k)
|
||||||
.with_additional("vector")
|
.with_additional(["vector", "distance"])
|
||||||
.do()
|
.do()
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
result = (
|
result = (
|
||||||
query_obj.with_near_text(content)
|
query_obj.with_near_text(content)
|
||||||
.with_limit(k)
|
.with_limit(k)
|
||||||
.with_additional("vector")
|
.with_additional(["vector", "distance"])
|
||||||
.do()
|
.do()
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -397,7 +398,7 @@ class Weaviate(VectorStore):
|
|||||||
docs_and_scores = []
|
docs_and_scores = []
|
||||||
for res in result["data"]["Get"][self._index_name]:
|
for res in result["data"]["Get"][self._index_name]:
|
||||||
text = res.pop(self._text_key)
|
text = res.pop(self._text_key)
|
||||||
score = np.dot(res["_additional"]["vector"], embedded_query)
|
score = res["_additional"]["distance"]
|
||||||
docs_and_scores.append((Document(page_content=text, metadata=res), score))
|
docs_and_scores.append((Document(page_content=text, metadata=res), score))
|
||||||
return docs_and_scores
|
return docs_and_scores
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from langchain.vectorstores import Weaviate
|
from core.vector_store.vector.weaviate import Weaviate
|
||||||
|
|
||||||
|
|
||||||
class WeaviateVectorStore(Weaviate):
|
class WeaviateVectorStore(Weaviate):
|
||||||
|
@ -30,7 +30,7 @@ services:
|
|||||||
|
|
||||||
# The Weaviate vector store.
|
# The Weaviate vector store.
|
||||||
weaviate:
|
weaviate:
|
||||||
image: semitechnologies/weaviate:1.18.4
|
image: semitechnologies/weaviate:1.19.0
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
# Mount the Weaviate data directory to the container.
|
# Mount the Weaviate data directory to the container.
|
||||||
@ -63,4 +63,4 @@ services:
|
|||||||
# environment:
|
# environment:
|
||||||
# QDRANT__API_KEY: 'difyai123456'
|
# QDRANT__API_KEY: 'difyai123456'
|
||||||
# ports:
|
# ports:
|
||||||
# - "6333:6333"
|
# - "6333:6333"
|
||||||
|
@ -253,7 +253,7 @@ services:
|
|||||||
|
|
||||||
# The Weaviate vector store.
|
# The Weaviate vector store.
|
||||||
weaviate:
|
weaviate:
|
||||||
image: semitechnologies/weaviate:1.18.4
|
image: semitechnologies/weaviate:1.19.0
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
# Mount the Weaviate data directory to the container.
|
# Mount the Weaviate data directory to the container.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user