chromadb 这个query_texts 查询的是基于分词还是基于向量查询的

chromadb 这个query_texts 查询的是基于分词 还是基于向量查询的

python 复制代码
def query_rag(question):
    result = collection.query(
        query_texts="突然没有网了怎么办",
        n_results=1
    )
    return result['documents'][0]   

里是基于向量查询,不是基于分词/关键词匹配。

python 复制代码
result = collection.query(
    query_texts="突然没有网了怎么办",
    n_results=1
)

ChromaDB 会按这个流程处理:

  1. 把 "突然没有网了怎么办" 交给 collection 配置的 embedding_function;
  2. 生成一个查询向量;
  3. 拿这个向量和库里已存储的文档向量做相似度检索;
  4. 返回距离最近、语义最接近的文档。

不是看你这句话里有没有"网""断网"这些词,是看语义是否接近。所以即使库里存的是"网络连接中断如何处理",也可能被检索出来。

几个注意点

  • query_texts 官方写法建议传列表:
python 复制代码
query_texts=["突然没有网了怎么办"]
  • 如果你创建 collection 时没有指定 embedding_function,ChromaDB 默认会用内置的 all-MiniLM-L6-v2 做向量化。
  • 如果创建时指定了自己的 Embedding 模型,查询时也会自动用同一个模型。
  • 如果你想更明确地控制,也可以自己先生成向量,然后用:
python 复制代码
collection.query(query_embeddings=[query_vector], n_results=1)

和分词/关键词查询的区别

方式 依据 适合场景
query_texts 向量查询 语义相似度 RAG、问答、模糊匹配
关键词/分词查询 词匹配 精确找 SKU、编号、专有名词
混合检索 向量 + 关键词 既要语义又要精确词匹配

如果你发现检索结果不准,通常不是分词问题,而是:embedding 模型不够合适、文本切块太大、或者查询语句和库中文档语义差异太大。

相关推荐
鸿业远图科技1 小时前
抚顺市_公交站点
python
VidDown1 小时前
上线三个月后的第一次事故:一个 Django 服务的日志、监控与故障复盘
数据库·python·django·wpf·音视频·视频编解码
打工仔折腾 AI2 小时前
Spring AI + Qwen 周报生成实战:从原始日志到人工确认卡
人工智能·后端·python·spring·elasticsearch·ai agent 实战
维克兜率天2 小时前
【维克】统计套利建模:从因子到信号的完整流程
android·开发语言·python·算法·kotlin
全栈练习生2 小时前
RAG 准确率提升体系化方案
python·ai
用户7624117567052 小时前
第十一章 GUI界面编程
python
天天被压力2 小时前
【Python量化实战宝典 #03】指数与板块行情接口全拆解:大盘·行业·概念一键取(Python 可跑)
java·人工智能·python
小马不起床2 小时前
第七阶段:数据存储与部署
数据库·python
weixin_461769402 小时前
conda create 创建容器 Failed to resolve ‘repo.anaconda.com‘问题
开发语言·python·conda·repo·网络问题·无法创建