Vector Database
向量数据库专门存向量并支持高速相似度检索的数据库。
详解
向量数据库是专门为存储和查询高维向量而设计的数据库,RAG 的核心基础设施。普通数据库擅长精确匹配(SELECT * WHERE id=42),但无法回答"哪些文档和这个问题最相似"。向量数据库解决的正是这个问题:它把每段文本的 embedding 向量存起来,当用户提问时,把问题也转成向量,然后在库里找"距离最近"的若干条——这个过程叫近似最近邻搜索(ANN,Approximate Nearest Neighbor,不逐条比对而是用特殊索引快速估算)。常见实现有 Chroma(本地轻量,适合原型)、Pinecone(云托管)、Weaviate、Qdrant、pgvector(PostgreSQL 扩展)。技术上使用 HNSW 等索引结构,使得在百万级向量中的检索能在毫秒级完成。
一个类比
把向量数据库想象成图书馆的"语义书架"。普通图书馆按书号精确排列,你得知道确切编号才能找到书。语义书架则把"话题相近的书"放在一起——你说"我要找关于宇宙起源的书",馆员会把大爆炸、天文学、宇宙哲学的书都取来,即使书名里没有"宇宙起源"这四个字。
举个例子
用 ChromaDB 在本地搭一个向量库并检索:
```python
import chromadb
client = chromadb.EphemeralClient() # 内存模式,适合快速原型
collection = client.create_collection("docs")
# 存入文档(Chroma 内置 embedding,默认用 all-MiniLM-L6-v2)
collection.add(
documents=["猫是哺乳动物", "狗喜欢玩耍", "Python 是编程语言"],
ids=["d1", "d2", "d3"]
)
# 查询:语义最近的 2 条
results = collection.query(query_texts=["宠物动物"], n_results=2)
print(results["documents"]) # [['猫是哺乳动物', '狗喜欢玩耍']]
```PYTHON 示例
相关概念
- → Embedding· 向量嵌入
- → Retrieval / Top-K· 检索
- → Hybrid Search· 混合检索