【LLM应用开发】一文搞懂:LLM应用核心之向量数据库和向量查询

一、前言

  • 向量数据库和向量查询是大语言模型(LLM)应用的核心之一

二、什么是向量数据库?

1. 一句话解释
  • 向量数据库就是用来存放「文本、图片等非结构化数据」的“数学表达(向量)”的数据库;
  • 支持模糊语义搜索,而不是精确匹配
2.✅ 关键概念:向量(Vector)
  • 向量是一个数字数组,比如:
[0.23, -0.91, 0.15, ..., 0.07]
  • 这些数字表示一段文本的语义特征,是用大模型(如 BERT, OpenAI embedding)生成的。
3.拓展:❓ “同一个问题,每次生成的向量表示会一样吗?”

简短回答通常是一致的,只要你使用的是确定性(非随机)的 embedding 模型
详细解释
✅ 如果你用的是常见的嵌入模型,例如:

  • OpenAI text-embedding-ada-002
  • HuggingFace 的 sentence-transformers
  • Cohere、百度 ERNIE、阿里 AliceMind 等
  • 这些模型都是 确定性模型(deterministic):【同一个输入 → 得到的向量始终相同

⚠️ 有例外吗?:有,以下情况会导致向量不一致:

情况 原因
模型内部用了随机性(少见) 某些训练中的 embedding 可能存在 Dropout 等
输入前处理不一致 比如去没去掉空格、换行、大小写
你使用了多个模型版本 模型参数或训练数据不同
使用了 ChatGPT 直接嵌入生成 GPT 模型不是 embedding 模型,非稳定输出

✅ 如何保证一致性?

  • ✅ 使用专门的嵌入模型(如 text-embedding-ada-002)
  • ✅ 保证输入文本一致(大小写、空格、标点)
  • ✅ 控制版本和参数不变

示例验证(用 OpenAI)

from openai import OpenAIEmbeddings

emb = OpenAIEmbeddings()
v1 = emb.embed_query("What is vector search?")
v2 = emb.embed_query("What is vector search?")

print(v1 == v2)  # ✅ True(完全一致)

三、向量数据库能做什么?

  • 传统数据库只能问:“这个名字等于 Alice 的记录在哪里?” ✅ 支持精确搜索!
  • 向量数据库可以问:“哪些内容的意思跟 ‘如何学 AI’ 类似?” ✅ 支持语义搜索!

四、类比 / 举例

类比:图书馆 vs 图书推荐机器人

系统 功能说明
传统数据库 像图书馆按编号精确查找一本书
向量数据库 像智能机器人按“你说的话”推荐相关书籍

举个具体例子

  • 1.假设你有 3 段知识内容:
    • a.“大模型是如何工作的?”
    • b.“向量数据库用于保存嵌入向量。”
    • c.“北京的天气很好。”
  • 2.现在你问了一个问题:“什么是向量搜索?”
  • 3. 系统怎么做
  • a.把你的问题用 OpenAI 的嵌入模型转成向量:
[0.12, -0.88, ..., 0.01]
  • b.把这个向量在数据库中“找最近的”:
    • 发现 #2 “向量数据库…” 和它最相近 ✅
  • 对 [步骤b] 的拓展:怎么理解或者衡量“最接近”?
    • 在向量数据库中,“最接近”通常指:两个向量之间的距离最短,或者方向最相似。
    • 常用的两种衡量方法
      • 欧氏距离(L2):看两个点之间的“直线距离”
      • 余弦相似度(cos):看两个向量夹角有多小(方向是否一致)
    • 图像理解:
      • 余弦相似度 = 1:两个向量方向完全一致 → 高相似度
      • 距离越短:内容语义越接近
  • c.返回这条相关知识作为答案参考!

图示理解(简化版)

          你提问:“向量搜索是啥?”
                     ↓
       → [0.12, 0.85, ..., -0.33]  ← 向量表示
                     ↓
         在向量数据库中找“最接近”的向量
                     ↓
     匹配结果 → “向量数据库用于保存嵌入向量。”


五、常用的向量数据库工具

工具 特点
FAISS Facebook 开源,超快
Milvus 商用级向量数据库
Weaviate 自带 REST/GraphQL 接口
Chroma Python 原生,轻量

六、总结类比表

概念 类比或说明
向量 把文本转成数学坐标,表示“含义”
向量数据库 存这些向量,并支持模糊语义查询
向量查询 查“意思最接近”的内容,不是精确关键词匹配
应用场景 知识问答、语义搜索、推荐系统、RAG 模型等

你可能感兴趣的:(python,LLM,向量数据库,向量查询,语义化搜索,大模型,AI)