Skip to content

Commit 0f67d1e

Browse files
letonghandtrawins
authored andcommitted
Fix Qdrant retriever RAG issue. (opea-project#1289)
* Fix Qdrant retriever no retrieved result issue. Signed-off-by: letonghan <[email protected]> Signed-off-by: Dariusz Trawinski <[email protected]>
1 parent 20d93b7 commit 0f67d1e

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

comps/retrievers/deployment/docker_compose/compose.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ services:
131131
RETRIEVER_COMPONENT_NAME: ${RETRIEVER_COMPONENT_NAME:-OPEA_RETRIEVER_QDRANT}
132132
QDRANT_HOST: ${QDRANT_HOST}
133133
QDRANT_PORT: ${QDRANT_PORT}
134-
INDEX_NAME: ${INDEX_NAME}
134+
QDRANT_INDEX_NAME: ${INDEX_NAME}
135135
depends_on:
136136
qdrant-vector-db:
137137
condition: service_healthy

comps/retrievers/src/integrations/qdrant.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44

55
import os
6+
from types import SimpleNamespace
67

78
from haystack_integrations.components.retrievers.qdrant import QdrantEmbeddingRetriever
89
from haystack_integrations.document_stores.qdrant import QdrantDocumentStore
@@ -26,7 +27,7 @@ class OpeaQDrantRetriever(OpeaComponent):
2627
def __init__(self, name: str, description: str, config: dict = None):
2728
super().__init__(name, ServiceType.RETRIEVER.name.lower(), description, config)
2829

29-
self.retriever = self._initialize_client()
30+
self.db_store, self.retriever = self._initialize_client()
3031
health_status = self.check_health()
3132
if not health_status:
3233
logger.error("OpeaQDrantRetriever health check failed.")
@@ -43,7 +44,7 @@ def _initialize_client(self) -> QdrantEmbeddingRetriever:
4344

4445
retriever = QdrantEmbeddingRetriever(document_store=qdrant_store)
4546

46-
return retriever
47+
return qdrant_store, retriever
4748

4849
def check_health(self) -> bool:
4950
"""Checks the health of the retriever service.
@@ -55,7 +56,7 @@ def check_health(self) -> bool:
5556
logger.info("[ check health ] start to check health of QDrant")
5657
try:
5758
# Check the status of the QDrant service
58-
_ = self.retriever.client
59+
_ = self.db_store.client
5960
logger.info("[ check health ] Successfully connected to QDrant!")
6061
return True
6162
except Exception as e:
@@ -75,6 +76,14 @@ async def invoke(self, input: EmbedDoc) -> list:
7576

7677
search_res = self.retriever.run(query_embedding=input.embedding)["documents"]
7778

79+
# format result to align with the standard output in opea_retrievers_microservice.py
80+
final_res = []
81+
for res in search_res:
82+
dict_res = res.meta
83+
res_obj = SimpleNamespace(**dict_res)
84+
final_res.append(res_obj)
85+
7886
if logflag:
79-
logger.info(f"[ similarity search ] search result: {search_res}")
80-
return search_res
87+
logger.info(f"[ similarity search ] search result: {final_res}")
88+
89+
return final_res

comps/retrievers/src/opea_retrievers_microservice.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ async def ingest_files(
8181
r.metadata["b64_img_str"] = [input.base64_image, r.metadata["b64_img_str"]]
8282
else:
8383
r.metadata["b64_img_str"] = input.base64_image
84-
metadata_list.append(r.metadata)
84+
if r.metadata:
85+
metadata_list.append(r.metadata)
8586
retrieved_docs.append(TextDoc(text=r.page_content))
8687
result = SearchedMultimodalDoc(
8788
retrieved_docs=retrieved_docs, initial_query=input.text, metadata=metadata_list

0 commit comments

Comments
 (0)