引言
Couchbase是一个屡获殊荣的分布式NoSQL云数据库,提供无与伦比的多样性、性能、可扩展性和经济价值。在Couchbase中,向量搜索是全文搜索服务的一部分。本文将带您深入了解如何在Couchbase中使用向量搜索。
主要内容
环境设置
在开始使用Couchbase VectorStore之前,您需要安装langchain-couchbase软件包:
pip install -qU langchain-couchbase
获取凭据
在Couchbase网站上创建一个新连接,并保存您的数据库用户名和密码。
import getpass
COUCHBASE_CONNECTION_STRING = getpass.getpass("Enter the connection string for the Couchbase cluster: ")
DB_USERNAME = getpass.getpass("Enter the username for the Couchbase cluster: ")
DB_PASSWORD = getpass.getpass("Enter the password for the Couchbase cluster: ")
初始化
在实例化前,我们需要建立一个Couchbase连接。
创建Couchbase连接对象
使用您的用户名和密码创建连接:
from datetime import timedelta
from couchbase.auth import PasswordAuthenticator
from couchbase.cluster import Cluster
from couchbase.options import ClusterOptions
auth = PasswordAuthenticator(DB_USERNAME, DB_PASSWORD)
options = ClusterOptions(auth)
cluster = Cluster(COUCHBASE_CONNECTION_STRING, options)
# 等待集群准备就绪
cluster.wait_until_ready(timedelta(seconds=5))
设置您想使用的存储桶、范围和集合名称:
BUCKET_NAME = "langchain_bucket"
SCOPE_NAME = "_default"
COLLECTION_NAME = "default"
SEARCH_INDEX_NAME = "langchain-test-index"
简单实例化
创建向量存储对象:
from langchain_couchbase.vectorstores import CouchbaseVectorStore
from langchain_huggingface import HuggingFaceEmbeddings
# 使用 Hugging Face 嵌入
embeddings = HuggingFaceEmbeddings(model="sentence-transformers/all-mpnet-base-v2")
vector_store = CouchbaseVectorStore(
cluster=cluster,
bucket_name=BUCKET_NAME,
scope_name=SCOPE_NAME,
collection_name=COLLECTION_NAME,
embedding=embeddings,
index_name=SEARCH_INDEX_NAME,
)
代码示例
添加和删除文档示例:
from uuid import uuid4
from langchain_core.documents import Document
document_1 = Document(page_content="I had chocolate chip pancakes for breakfast.", metadata={"source": "tweet"})
documents = [document_1]
uuids = [str(uuid4())]
vector_store.add_documents(documents=documents, ids=uuids)
vector_store.delete(ids=[uuids[-1]])
常见问题和解决方案
- 问题:搜索结果中看不到我指定的字段。
确保您试图访问的字段已被索引。在Capella中,您可以在“高级模式”下启用“存储动态字段”选项。
- 问题:无法在搜索结果中看到元数据对象。
确保metadata字段被索引。可以选择映射所有字段以允许搜索所有元数据字段。
总结和进一步学习资源
Couchbase的向量搜索功能为多种应用场景提供了强大的支持。通过合理配置和使用,开发者可以提升应用的智能性能。更多内容可以参考以下资源:
- 官方文档: Couchbase文档
- 向量存储概念指南: Vector store概念指南
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---