강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

아이테킨님의 프로필 이미지
아이테킨

작성한 질문수

RAG 마스터: 기초부터 고급기법까지 (feat. LangChain)

검색기 (Retrievers)

vectorstore의 as_retriever와 similarity_search는 같은 로직인가요?, 사용되는 검색 알고리즘은 뭔가요?

작성

·

10

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 메서드는 내부적으로 유사한 로직을 사용하지만, 약간의 차이가 있습니다.

  1. as_retriever vs similarity_search:

    • similarity_search: 특정 쿼리 벡터와 데이터셋 내의 벡터 간의 유사도를 계산하여 가장 유사한 결과를 반환하는 방법입니다. 이는 주로 벡터 간 거리 혹은 유사도 점수를 계산하여 결과를 제공합니다.
    • as_retriever: 이는 similarity_search 기능을 포함할 수 있는 더 상위 레벨의 기능입니다. as_retriever는 사용자 인터페이스의 관점에서 데이터를 검색하기 위한 더 높은 수준의 편의성을 제공합니다. as_retriever는 검색 및 일치 항목을 보다 쉽게 사용할 수 있도록 해주는 래퍼입니다.
  2. 사용되는 검색 알고리즘:

    • 일반적으로 이런 검색에서는 코사인 유사도(Cosine Similarity), L2 거리(Euclidean Distance) 등의 벡터 유사도 측정 방법이 사용됩니다. 어떤 알고리즘이 선택될지는 벡터라이제이션 방식과 데이터셋의 특성에 따라 다를 수 있습니다.

기본적으로 이러한 메서드들은 검색의 편리함과 유연성을 제공하기 위해 설계되었습니다. as_retriever는 LangChain 내에서 API와 유사하게 사용할 수 있도록 지원하여 개발편의성을 높입니다.

관련 질문들에 대해서는 인프런의 LangChain을 활용한 검색기능에 대한 토론 게시물에서도 비슷한 내용을 다루고 있으니 참고해 보시면 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

아이테킨님의 프로필 이미지
아이테킨

작성한 질문수

질문하기