Chroma是什么
Chroma(通常指 ChromaDB)是一款 开源、AI
原生的向量数据库,专为存储和检索 高维嵌入向量
而设计,目标是让开发者 5 分钟内在本地跑起一个语义搜索或 RAG
系统。
极简安装:pip install chromadb
双运行模式:
- 内存模式:调试/原型随意重启;
- 持久化模式:指定
persist_directory
即可落盘,生产也不怕丢数据。
HNSW 索引:百万级向量也能 毫秒级
响应。
使用chroma存储
文档分块
1 2 3 4 5 6 7
| from langchain.document_loaders import PyPDFLoader from langchain.text_splitter import RecursiveCharacterTextSplitter
loader = PyPDFLoader("input/健康档案.pdf") docs = loader.load() #递归分块 text_splitter = RecursiveCharacterTextSplitter(chunk_siz
|
定义embedding模型与chroma
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| from langchain.vectorstores import Chroma from langchain_openai import OpenAIEmbeddings embedding = OpenAIEmbeddings( api_key="sk-", base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", model="text-embedding-v4", check_embedding_ctx_length = False, dimensions=1536 ) # 使用 Chroma 向量数据库存储文档 chunks vectorstore = Chroma.from_documents( documents=chunks, # 要存储的文档chunks列表(已处理好的文本片段) embedding=embedding, persist_directory="chromaDB", # 向量数据库的持久化存储目录路径 collection_name="demo001" # 集合名称,用于区分不同的文档集合 ) vectorstore.persist()
|
检索
这里采取直接检索进行测试
1 2 3 4 5
| results = vectorstore.similarity_search( "张三九的基本信息是什么", k=2, collection_name="demo001" # 指定检索的集合 )
|
重新加载
1 2 3 4 5 6 7
| # 重新加载已存在的 Chroma 数据库 vectorstore = Chroma( persist_directory="./chroma_db", embedding_function=embedding )
retriever = vectorstore.as_retriever()
|
参考资料
Chroma
| 🦜️🔗 LangChain — Chroma | 🦜️🔗 LangChain