# 引言
在AI开发中,处理和存储向量数据是关键任务之一。Chroma是一个AI原生的开源向量数据库,专注于为开发者提供高效和愉悦的开发体验。本文将介绍如何使用Chroma向量数据库及其与LangChain的集成,帮助你更好地管理和查询向量数据。
# 主要内容
## 安装和设置
要使用Chroma向量存储,首先需要安装`langchain-chroma`集成包。
```bash
pip install -qU "langchain-chroma>=0.1.2"
Chroma可以不需要任何凭据直接使用。如果你希望追踪模型调用,还可以配置LangSmith API。
# os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
# os.environ["LANGSMITH_TRACING"] = "true"
初始化
基本初始化
以下是如何使用基本初始化来创建一个Chroma向量存储并在本地保存数据。
from langchain_openai import OpenAIEmbeddings
from langchain_chroma import Chroma
# 使用API代理服务提高访问稳定性
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
vector_store = Chroma(
collection_name="example_collection",
embedding_function=embeddings,
persist_directory="./chroma_langchain_db"
)
从客户端初始化
使用Chroma客户端初始化,可以更轻松地访问底层数据库。
import chromadb
persistent_client = chromadb.PersistentClient()
collection = persistent_client.get_or_create_collection("collection_name")
vector_store_from_client = Chroma(
client=persistent_client,
collection_name="collection_name",
embedding_function=embeddings
)
管理向量存储
添加和更新文档
你可以使用add_documents方法添加文档,也可以使用update_documents进行更新。
from langchain_core.documents import Document
from uuid import uuid4
document = Document(
page_content="示例内容",
metadata={"source": "example"},
id=1
)
vector_store.add_documents(documents=[document], ids=[str(uuid4())])
删除文档
使用delete方法可以删除文档。
vector_store.delete(ids=["document_id"])
查询向量存储
相似性搜索
可以通过相似性搜索来查询向量存储:
results = vector_store.similarity_search(
"查询文本",
k=2,
filter={"source": "example"}
)
for res in results:
print(f"* {res.page_content} [{res.metadata}]")
常见问题和解决方案
- 网络问题:在某些地区,由于网络限制,开发者可能需要使用API代理服务来提高访问稳定性。
- 数据持久化:确保在初始化时正确设置
persist_directory以保存数据。
总结和进一步学习资源
通过Chroma,开发者可以高效地管理和查询向量数据,提高生产力。如果你想深入学习Chroma的更多功能和配置,可以参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---