可以做众筹的网站,山西省城乡住房和建设厅网站,金华网站建设电话,asp转换手机网站chroma 一步步使用
安装
# 安装chromadb
pip install chromadb,sentence_transformers# 不启动服务会出现sock.connect(sa)TimeoutError: timed out
chroma run服务启动后#xff0c;您将看到类似以下输出#xff1a;
建立连接
部署完成后#xff0c;需要建立与Chroma服…chroma 一步步使用
安装
# 安装chromadb
pip install chromadb,sentence_transformers# 不启动服务会出现sock.connect(sa)TimeoutError: timed out
chroma run服务启动后您将看到类似以下输出
建立连接
部署完成后需要建立与Chroma服务的连接
import chromadb# 创建了临时客户端。程序终止时您提取的任何数据都会丢失
client chromadb.Client()创建向量集合
chroma连接若直接创建集合(“Collection”集合是存储向量的基本单位类似于关系型数据库中的表)会使用内置的嵌入模型all-MiniLM-L6-v2。
# 首先导入embedding模型
from chromadb.utils import embedding_functionscollection chroma_client.create_collection(namemy_collection)
collection.add(documents[关于深度学习技术的文档,关于的爱情小说文档],ids[id1, id2]
)
print(collection)chroma默认使用欧氏距离计算向量相似度
查询文档
Chroma提供多种查询方式满足不同场景需求
1. 基于ID查询
当你知道确切的文档ID时可以直接查询
# 根据ID获取文档
result collection.get(ids[id1]
)2. 语义向量检索
RAG系统的核心功能是语义检索基于查询与文档的语义相似度
# 语义检索
# Chroma 默认会返回 10 条结果。这里我们只添加了 2 个文档因此我们设置n_results2
results collection.query(query_texts[如何使用向量数据库],n_results2
)
print(results)工程中优化
混合检索
Chroma还支持将全文匹配与向量检索结合
# 全文匹配 向量检索
results collection.query(query_texts[检索技术的应用],n_results2,where_document{$contains: 检索}, # 文档必须包含检索一词include[documents, metadatas]
)Chroma支持将向量检索与元数据过滤结合实现更精准的查询
# 元数据过滤 向量检索
results collection.query(query_texts[大语言模型的应用],n_results2,where{topic: llm}, # 仅检索topic为llm的文档include[documents, metadatas]
)元数据过滤支持多种操作符
相等{field: value}不等{field: {$ne: value}}大于/小于{field: {$gt: value}} 或 {field: {$lt: value}}范围{field: {$gte: min_value, $lte: max_value}}复合条件{$and: [condition1, condition2]}
调参索引与性能优化
Chroma默认使用HNSW分层可导航小世界图作为向量索引算法无需手动创建索引。但你可以通过元数据调整索引参数
# 创建集合时设置HNSW参数
collection client.create_collection(nameoptimized_collection,embedding_functionembedding_func,metadata{hnsw:space: cosine, # 相似度度量方式hnsw:M: 16, # 每个节点的最大连接数hnsw:ef_construction: 200, # 构建索引时的搜索宽度hnsw:ef: 100 # 查询时的搜索宽度}
)关键参数解释
M控制图的连接度值越大精度越高但内存消耗也越大ef_construction影响索引质量值越大精度越高但构建速度越慢ef影响查询精度和速度值越大召回率越高但查询速度越慢