Setup
CouchbaseSearchVectorStore에 접근하려면 먼저 langchain-couchbase 파트너 패키지를 설치해야 합니다:
Credentials
Couchbase website로 이동하여 새 연결을 생성하고, 데이터베이스 username과 password를 저장해 두세요:Initialization
인스턴스화하기 전에 연결을 생성해야 합니다.Create Couchbase Connection Object
초기에 Couchbase 클러스터에 연결을 생성한 다음, 해당 cluster 객체를 Vector Store에 전달합니다. 여기서는 위에서 설정한 username과 password를 사용해 연결합니다. 클러스터에 대해 지원되는 다른 방식으로도 연결할 수 있습니다. Couchbase 클러스터 연결에 대한 자세한 내용은 documentation을 확인하세요.Simple Instantiation
아래에서는 클러스터 정보와 Search index 이름으로 vector store 객체를 생성합니다.Specify the Text & Embeddings Field
text_key 및 embedding_key 필드를 사용하여 문서의 text와 embeddings 필드를 선택적으로 지정할 수 있습니다.
Manage vector store
vector store를 생성하면 다양한 항목을 추가 및 삭제하여 상호작용할 수 있습니다.Add items to vector store
add_documents function을 사용하여 vector store에 항목을 추가할 수 있습니다.
Delete items from vector store
Query vector store
vector store가 생성되고 관련 문서가 추가되면, 체인 또는 에이전트 실행 중에 이를 질의하고 싶을 것입니다.Query directly
Similarity search
간단한 similarity search는 다음과 같이 수행할 수 있습니다:Similarity search with Score
similarity_search_with_score method를 호출하여 결과의 score도 가져올 수 있습니다.
Filtering Results
Couchbase Search service에서 지원하는 문서의 text 또는 metadata에 대한 filter를 지정하여 검색 결과를 필터링할 수 있습니다.filter는 Couchbase Python SDK에서 지원하는 유효한 SearchQuery일 수 있습니다. 이러한 필터는 Vector Search가 수행되기 전에 적용됩니다.
metadata의 필드 중 하나를 기준으로 필터링하려면 .을 사용하여 지정해야 합니다.
예를 들어, metadata의 source 필드를 가져오려면 metadata.source를 지정해야 합니다.
filter는 Search Index에서 지원되어야 한다는 점에 유의하세요.
Specifying Fields to Return
검색 시fields 파라미터를 사용하여 문서에서 반환할 필드를 지정할 수 있습니다. 이러한 필드는 반환되는 Document의 metadata 객체의 일부로 반환됩니다. Search index에 저장된 모든 필드를 가져올 수 있습니다. 문서의 text_key는 문서의 page_content의 일부로 반환됩니다.
가져올 필드를 지정하지 않으면, 인덱스에 저장된 모든 필드가 반환됩니다.
metadata의 필드 중 하나를 가져오려면 .을 사용하여 지정해야 합니다.
예를 들어, metadata의 source 필드를 가져오려면 metadata.source를 지정해야 합니다.
Query by turning into retriever
체인에서 더 쉽게 사용하기 위해 vector store를 retriever로 변환할 수도 있습니다. 다음은 vector store를 retriever로 변환한 뒤 간단한 query와 filter로 retriever를 호출하는 방법입니다.Hybrid Queries
Couchbase는 문서의 비-벡터 필드(예:metadata 객체)에 대한 검색과 Vector Search 결과를 결합하여 하이브리드 검색을 수행할 수 있습니다.
결과는 Vector Search와 Search Service가 지원하는 검색의 결과 조합을 기반으로 합니다. 각 구성 검색의 score를 합산해 최종 score를 계산합니다.
하이브리드 검색을 수행하려면 모든 similarity search에 전달할 수 있는 선택적 파라미터 search_options가 있습니다.
search_options에 대한 다양한 검색/쿼리 가능성은 여기에서 확인할 수 있습니다.
Create Diverse Metadata for Hybrid Search
하이브리드 검색을 시뮬레이션하기 위해 기존 문서에서 임의의 metadata를 생성해 보겠습니다. metadata에 균등하게 세 가지 필드를 추가합니다: 2010년과 2020년 사이의date, 1에서 5 사이의 rating, 그리고 author는 John Doe 또는 Jane Doe로 설정합니다.
Query by Exact Value
metadata 객체의 author와 같은 텍스트 필드에서 정확히 일치하는 항목을 검색할 수 있습니다.
Query by Partial Match
검색에 fuzziness를 지정하여 부분 일치를 검색할 수 있습니다. 이는 검색어의 약간의 변형이나 오타를 찾고자 할 때 유용합니다. 여기서 “Jae”는 “Jane”과 가깝습니다(fuzziness 1).Query by Date Range Query
metadata.date와 같은 날짜 필드에 대해 날짜 범위 쿼리에 해당하는 문서를 검색할 수 있습니다.
Query by Numeric Range Query
metadata.rating과 같은 숫자 필드에서 범위에 해당하는 문서를 검색할 수 있습니다.
Combining Multiple Search Queries
여러 검색 쿼리는 AND(conjuncts) 또는 OR(disjuncts) 연산자로 결합할 수 있습니다. 이 예제에서는 rating이 3과 4 사이이고 날짜가 2015년과 2018년 사이인 문서를 확인합니다.filter 파라미터를 사용하세요.
Combining Hybrid Search Query with Filters
요구 사항에 맞는 결과를 얻기 위해 하이브리드 검색과 필터를 결합할 수 있습니다. 이 예제에서는 rating이 3과 5 사이이고 텍스트 필드에 “independence” 문자열이 일치하는 문서를 확인합니다.Other Queries
마찬가지로,search_options 파라미터에서 Geo Distance, Polygon Search, Wildcard, Regular Expressions 등 지원되는 모든 Query 메서드를 사용할 수 있습니다. 사용 가능한 쿼리 메서드 및 구문에 대한 자세한 내용은 문서를 참조하세요.
Usage for retrieval-augmented generation
이 vector store를 retrieval-augmented generation(RAG)에 사용하는 방법에 대한 가이드는 다음 섹션을 참조하세요:Frequently Asked Questions
Question: CouchbaseSearchVectorStore 객체를 생성하기 전에 Search index를 만들어야 하나요?
네, 현재는CouchbaseSearchVectoreStore 객체를 생성하기 전에 Search index를 생성해야 합니다.
Question: 검색 결과에서 지정한 모든 필드를 볼 수 없습니다
Couchbase에서는 Search index에 저장된 필드만 반환할 수 있습니다. 검색 결과에서 액세스하려는 필드가 Search index의 일부인지 확인하세요. 이를 처리하는 한 가지 방법은 인덱스에서 문서의 필드를 동적으로 색인화(Index)하고 저장(Store)하는 것입니다.- Capella에서는 “Advanced Mode”로 이동한 다음, 꺾쇠(chevron) “General Settings” 아래에서 “[X] Store Dynamic Fields” 또는 “[X] Index Dynamic Fields”를 체크할 수 있습니다
- Couchbase Server에서는 Index Editor(Quick Editor 아님)의 꺾쇠(chevron) “Advanced” 아래에서 “[X] Store Dynamic Fields” 또는 “[X] Index Dynamic Fields”를 체크할 수 있습니다
Question: 검색 결과에서 metadata 객체를 볼 수 없습니다
이는 문서의metadata 필드가 Couchbase Search index에 의해 인덱싱 및/또는 저장되지 않았기 때문일 가능성이 높습니다. 문서의 metadata 필드를 인덱싱하려면, 인덱스에 child mapping으로 추가해야 합니다.
매핑에서 모든 필드를 매핑하도록 선택하면 모든 metadata 필드로 검색할 수 있습니다. 또는 인덱스를 최적화하기 위해 metadata 객체 내부의 특정 필드만 인덱싱하도록 선택할 수 있습니다. child mapping 인덱싱에 대해 더 알아보려면 docs를 참조하세요.
Creating Child Mappings
Question: filter와 search_options / 하이브리드 쿼리의 차이는 무엇인가요?
Filters는 Search index에서 검색되는 문서를 제한하는 pre-filters입니다. Couchbase Server 7.6.4 이상에서 사용할 수 있습니다. 하이브리드 쿼리는 검색 인덱스에서 반환되는 결과를 조정하는 데 사용할 수 있는 추가 검색 쿼리입니다. Filters와 하이브리드 검색 쿼리는 약간 다른 구문을 제외하면 동일한 기능을 갖습니다. Filters는 SearchQuery 객체이고, 하이브리드 검색 쿼리는 dictionaries입니다.API reference
CouchbaseSearchVectorStore의 모든 기능과 구성에 대한 자세한 문서는 API reference에서 확인하세요.
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.