사용한 파이썬 버전 - 3.10.12
사용한 langchian-milvus 버전 - 0.1.4
사용한 pymilvus 버전 - 2.4.5
에러 발생 경로
retriever = milvus.as_retriever(
search_type="similarity_score_threshold",
search_kwargs={'score_threshold': 0.8}
)
위 코드를 사용하여 유사도 점수가 0.8 이상인 문서를 가져올 때 발생 합니다.
조치방법
1. as_retriever를 [컨트롤(Ctrl) + 좌클릭(Left Cleck)]을 합니다.
2. 아래의 def 함수를 검색합니다.
검색방법 : [컨트롤(Ctrl) + F]
[원본 - langchain-milvus]
def _get_relevant_documents(
self, query: str, *, run_manager: CallbackManagerForRetrieverRun
) -> List[Document]:
if self.search_type == "similarity":
docs = self.vectorstore.similarity_search(query, **self.search_kwargs)
elif self.search_type == "similarity_score_threshold":
docs_and_similarities = (
self.vectorstore.similarity_search_with_relevance_scores(
query, **self.search_kwargs
)
)
docs = [doc for doc, _ in docs_and_similarities]
elif self.search_type == "mmr":
docs = self.vectorstore.max_marginal_relevance_search(
query, **self.search_kwargs
)
else:
raise ValueError(f"search_type of {self.search_type} not allowed.")
return docs
async def _aget_relevant_documents(
self, query: str, *, run_manager: AsyncCallbackManagerForRetrieverRun
) -> List[Document]:
if self.search_type == "similarity":
docs = await self.vectorstore.asimilarity_search(
query, **self.search_kwargs
)
elif self.search_type == "similarity_score_threshold":
docs_and_similarities = (
await self.vectorstore.asimilarity_search_with_relevance_scores(
query, **self.search_kwargs
)
)
docs = [doc for doc, _ in docs_and_similarities]
elif self.search_type == "mmr":
docs = await self.vectorstore.amax_marginal_relevance_search(
query, **self.search_kwargs
)
else:
raise ValueError(f"search_type of {self.search_type} not allowed.")
return docs
3. 코드를 수정합니다.
[수정 후]
def _get_relevant_documents(
self, query: str, *, run_manager: CallbackManagerForRetrieverRun
) -> List[Document]:
if self.search_type == "similarity":
docs = self.vectorstore.similarity_search(query, **self.search_kwargs)
elif self.search_type == "similarity_score_threshold":
docs_and_similarities = (
self.vectorstore.similarity_search_with_score(
query, **self.search_kwargs
)
)
docs = [doc for doc, _ in docs_and_similarities]
elif self.search_type == "mmr":
docs = self.vectorstore.max_marginal_relevance_search(
query, **self.search_kwargs
)
else:
raise ValueError(f"search_type of {self.search_type} not allowed.")
return docs
async def _aget_relevant_documents(
self, query: str, *, run_manager: AsyncCallbackManagerForRetrieverRun
) -> List[Document]:
if self.search_type == "similarity":
docs = await self.vectorstore.asimilarity_search(
query, **self.search_kwargs
)
elif self.search_type == "similarity_score_threshold":
docs_and_similarities = (
await self.vectorstore.asimilarity_search_with_score(
query, **self.search_kwargs
)
)
docs = [doc for doc, _ in docs_and_similarities]
elif self.search_type == "mmr":
docs = await self.vectorstore.amax_marginal_relevance_search(
query, **self.search_kwargs
)
else:
raise ValueError(f"search_type of {self.search_type} not allowed.")
return docs
변경 내용
def _get_relevant_documents 함수
similarity_search_with_relevance_scores → similarity_search_with_score
async def _aget_relevant_documents 함수
asimilarity_search_with_relevance_scores → asimilarity_search_with_score
이렇게 변경 후 as_retriever를 사용하면 NotImplementedError를 조치한것을 볼 수 있습니다.
github 에러 발생글 :
https://github.com/langchain-ai/langchain/issues/19106
'Error조치' 카테고리의 다른 글
[Error] VLLM 'use_beam_search' Error (0) | 2024.10.17 |
---|---|
[Error] OSError: [WinError 126] 지정된 모듈을 찾을 수 없습니다. fbgemm.dll or one of its dependencies. (0) | 2024.08.19 |