向量数据库完全指南 - 语义搜索与RAG应用
向量数据库专门用于存储、索引和查询高维向量数据,是AI时代的核心基础设施。
文档分块
向量化
存储向量
相似度检索
LLM生成
云端托管的向量数据库,零运维
from pinecone import Pinecone
pc = Pinecone(api_key="your-api-key")
index = pc.Index("products")
# 插入向量
index.upsert(vectors=[
("id1", [0.1, 0.2, 0.3, ...]),
("id2", [0.4, 0.5, 0.6, ...])
])
# 查询
results = index.query(
vector=[0.1, 0.2, 0.3, ...],
top_k=5,
include_metadata=True
)
高性能开源向量数据库,Rust实现
from qdrant_client import QdrantClient
client = QdrantClient(host="localhost", port=6333)
# 创建集合
client.create_collection(
collection_name="products",
vectors_config={"size": 384, "distance": "Cosine"}
)
# 插入向量
client.upsert(
collection_name="products",
points=[
{"id": 1, "vector": [0.1, 0.2, ...],
"payload": {"name": "Product A"}}
]
)
# 搜索
results = client.search(
collection_name="products",
query_vector=[0.1, 0.2, ...],
limit=5
)
GraphQL API,端到端向量平台
分布式向量数据库,云原生
from qdrant_client import QdrantClient
from sentence_transformers import SentenceTransformer
from openai import OpenAI
# 初始化
client = QdrantClient(host="localhost", port=6333)
encoder = SentenceTransformer('bge-large-zh-v1.5')
llm = OpenAI(api_key="sk-xxx", base_url="https://api.deepseek.com")
# 1. 文档向量化并存储
def add_documents(documents):
vectors = encoder.encode(documents)
points = []
for i, (text, vector) in enumerate(zip(documents, vectors)):
points.append({
"id": i,
"vector": vector.tolist(),
"payload": {"text": text}
})
client.upsert(collection_name="knowledge", points=points)
# 2. 向量检索
def retrieve(query, top_k=3):
query_vector = encoder.encode(query)
results = client.search(
collection_name="knowledge",
query_vector=query_vector.tolist(),
limit=top_k
)
return [result.payload['text'] for result in results]
# 3. RAG生成
def rag_generate(user_query):
contexts = retrieve(user_query)
prompt = f"""基于以下上下文回答问题:
{' '.join(contexts)}
问题:{user_query}
答案:"""
response = llm.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
# 使用
answer = rag_generate("什么是机器学习?")
print(answer)
| 数据库 | 类型 | 向量支持 | 适用场景 |
|---|---|---|---|
| Pinecone | 托管 | ✅ | 快速原型 |
| Qdrant | 开源 | ✅ | 高性能 |
| Weaviate | 开源 | ✅ | 端到端 |
| Milvus | 开源 | ✅ | 大规模 |
| PostgreSQL + pgvector | 扩展 | ✅ | 传统DB扩展 |