探索Chroma向量数据库:提高开发者生产力的AI原生解决方案

129 阅读2分钟
# 引言

在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的更多功能和配置,可以参考以下资源:

参考资料

  1. Chroma GitHub
  2. LangChain文档

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


---END---