작성
·
11
0
안녕하세요. 강의 잘 듣고 있습니다.
제목이 곧 질문인데요.
Chroma로 생성한 vectorstore객체의 as_retriever매서드와 similarity_search는 내부적으로 같은 알고리즘 혹은 로직을 사용하나요?
그렇다면 이 두가지 매서드의 차이점은 langchain을 사용할 때 편의성 차원에서 as_retriever가 더 좋다 이렇게 알고있으면 되는걸까요?
또한 내부에서 사용되는 검색 알고리즘은 어떤건지 알 수 있을까요?
감사합니다.
답변 2
0
안녕하세요. 판다스 스튜디오입니다.
먼저 as_retriever()
와 similarity_search()
는 같은 내부 로직을 사용합니다. as_retriever()
메서드는 vectorstore를 retriever 인터페이스로 변환하는 역할을 하며, 내부적으로는 여전히 vectorstore의 similarity_search
메서드를 호출합니다. 따라서 두 방법 모두 동일한 검색 알고리즘과 유사도 측정 방식을 사용한다고 보시면 됩니다.
차이점은 사용 방식과 편의성에 있습니다. similarity_search()
는 vectorstore의 기본 검색 메서드로 직접적인 접근을 제공하는 반면, as_retriever()
는 LangChain 에서 다른 컴포넌트와 통합 사용할 수 있는 표준화된 retriever 인터페이스를 제공합니다.
따라서, 편의성 차원에서는 as_retriever()
가 더 유리합니다. RAG 파이프라인이나 체인 구성에서 다른 retriever들과 동일한 방식으로 사용할 수 있습니다.
검색 알고리즘의 경우 Chroma를 포함해서 많은 vectorstore들이 HNSW(Hierarchical Navigable Small World)라는 그래프 기반 인덱스 구조를 구현합니다. 구체적인 내부 구현은 각 vectorstore 제공업체에 따라 다를 수 있지만, 기본적인 원리는 같다고 보시면 됩니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 아이테킨님.
LangChain의 vectorstore와 검색 방법에 관한 질문 주셨네요. 여기서 Chroma를 통한 vectorstore 객체의 as_retriever
메서드와 similarity_search
메서드는 내부적으로 유사한 로직을 사용하지만, 약간의 차이가 있습니다.
as_retriever
vs similarity_search
:
similarity_search
: 특정 쿼리 벡터와 데이터셋 내의 벡터 간의 유사도를 계산하여 가장 유사한 결과를 반환하는 방법입니다. 이는 주로 벡터 간 거리 혹은 유사도 점수를 계산하여 결과를 제공합니다.as_retriever
: 이는 similarity_search
기능을 포함할 수 있는 더 상위 레벨의 기능입니다. as_retriever
는 사용자 인터페이스의 관점에서 데이터를 검색하기 위한 더 높은 수준의 편의성을 제공합니다. as_retriever
는 검색 및 일치 항목을 보다 쉽게 사용할 수 있도록 해주는 래퍼입니다.사용되는 검색 알고리즘:
기본적으로 이러한 메서드들은 검색의 편리함과 유연성을 제공하기 위해 설계되었습니다. as_retriever
는 LangChain 내에서 API와 유사하게 사용할 수 있도록 지원하여 개발편의성을 높입니다.
관련 질문들에 대해서는 인프런의 LangChain을 활용한 검색기능에 대한 토론 게시물에서도 비슷한 내용을 다루고 있으니 참고해 보시면 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.