探索Couchbase中的向量搜索——在您的应用中释放AI的潜力

52 阅读2分钟

引言

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的向量搜索功能为多种应用场景提供了强大的支持。通过合理配置和使用,开发者可以提升应用的智能性能。更多内容可以参考以下资源:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---