query='블로그 주인장은 차은우와 비슷하게 생겼는가?'
retriever.get_relevant_documents(query)
retriever.invoke(query)
배경
- 뭔가 어느순간 최종단계에서 get_relevant_documents을 쓰고 있었다. 아마도 GPT 때문에 invoke로 쓰던게 대체된것 같다.
- 둘다 비슷한 기능으로 동작하는거 같은데 무슨 차이가 있는지 알고 싶었다.
해결과정
- get_relevant_documents의 코드확인
@deprecated(since="0.1.46", alternative="invoke", removal="0.3.0")
def get_relevant_documents(
self,
query: str,
*,
callbacks: Callbacks = None,
tags: Optional[List[str]] = None,
metadata: Optional[Dict[str, Any]] = None,
run_name: Optional[str] = None,
**kwargs: Any,
) -> List[Document]:
"""Retrieve documents relevant to a query.
Users should favor using `.invoke` or `.batch` rather than
`get_relevant_documents directly`.
Args:
query: string to find relevant documents for.
callbacks: Callback manager or list of callbacks. Defaults to None.
tags: Optional list of tags associated with the retriever.
These tags will be associated with each call to this retriever,
and passed as arguments to the handlers defined in `callbacks`.
Defaults to None.
metadata: Optional metadata associated with the retriever.
This metadata will be associated with each call to this retriever,
and passed as arguments to the handlers defined in `callbacks`.
Defaults to None.
run_name: Optional name for the run. Defaults to None.
**kwargs: Additional arguments to pass to the retriever.
Returns:
List of relevant documents.
"""
config: RunnableConfig = {}
if callbacks:
config["callbacks"] = callbacks
if tags:
config["tags"] = tags
if metadata:
config["metadata"] = metadata
if run_name:
config["run_name"] = run_name
return self.invoke(query, config, **kwargs)
- 해석 : @deprecated(since="0.1.46", alternative="invoke", removal="0.3.0") 를 주목해보면, 사실상 내부적으로 invoke 이미 대체돼 사용되고 있었다.
결론
- 함수 내부에서 get_relevant_documents 대신
.invoke
또는 .batch
을 사용하라고 권장까지 하고 있다. get_relevant_documents는 더이상 사용하지 않는것이 좋겠다.