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 模型不够合适、文本切块太大、或者查询语句和库中文档语义差异太大。

相关推荐
武天旭7 小时前
AI安全--AI大模型的毒性偏见与安全对齐实践
人工智能·python·深度学习
视觉小萌新8 小时前
AI Class 3 · Chapter 2-3:函数、异常、文件读写+JSON / JSONL 读写(小白版)
人工智能·python·json
小小张说故事9 小时前
Python 的 obj.x 到底按什么顺序找?拆开数据描述符、实例字典和 __getattr__ 那条优先级链
python
用户114818678948410 小时前
水印的实现方式逻辑
前端·python
贾公子10 小时前
从单条内容到账号维度——AIGC 风险评分的工程实现
后端·python
木头左12 小时前
【Python】不点浏览器发博客:逆向 CSDN 创作中心接口做 md-publish 技能
python·自动化·api
Tt有了t12 小时前
设计模式速查
java·python·设计模式
deepseek2312 小时前
Python日志拖慢请求?QueueHandler排队、丢失与退出实测
python·性能优化·logging·后端开发·queuehandler
用户912940468484213 小时前
Codex 从零到能交付(05):第一次改代码:生成一个文件清单脚本
python
Dmz丶13 小时前
前端转 AI 100 天 Day 38:Token 管理与成本优化——别让 API 账单爆炸
python