向量数据库与 RAG 架构:AI 时代后端的核心基建

87 阅读3分钟

背景

随着 ChatGPT、文心一言等大模型的兴起,后端开发迎来了新的挑战:

  • 传统数据库(MySQL、Postgres)擅长存储结构化数据,但无法高效处理 语义搜索
  • 用户希望通过 自然语言 检索数百万级文档,而不是单纯依赖 LIKEWHERE
  • AI 应用(如智能客服、代码助手)需要 低延迟 + 高召回率 的知识检索能力。

这催生了 向量数据库(Vector Database)RAG(Retrieval-Augmented Generation) 架构的兴起。


什么是向量数据库?

向量数据库的核心能力是存储和检索 高维向量

举例:一段文本 "Java后端性能优化" 会被 Embedding 模型(如 OpenAI text-embedding-3 或 BGE-M3)转换成 1536 维的向量:

[0.123, -0.045, 0.982, ...]  # 1536 维

当用户搜索 "Spring Boot 调优",系统会将输入也转为向量,然后在数据库中做 相似度检索(cosine similarity / inner product / L2 distance) ,找到最相关的内容。

常见向量数据库:

  • Milvus:开源,社区活跃,适合大规模数据。
  • Weaviate:支持 Graph + 向量,适合知识图谱。
  • Postgres + pgvector:兼容性强,适合已有数据库系统。
  • Pinecone / Qdrant:云原生,易于接入 AI SaaS。

RAG 架构:AI 与数据库的桥梁

RAG(检索增强生成)是 大模型应用的事实标准架构,其流程是:

  1. 用户提问(自然语言)。
  2. 向量化(Embedding 模型将问题转成向量)。
  3. 检索(向量数据库找到相关文档 Top-K)。
  4. 增强提示词(把检索到的文档拼接进 prompt)。
  5. 大模型生成答案

这种架构让大模型具备了“记忆”与“私有知识库”,解决了 幻觉(hallucination)上下文不足 问题。


实践案例:构建一个 RAG 后端 API

假设我们要做一个 智能 API 文档问答系统,用户可以用自然语言提问,比如:“Java 如何实现线程池?”

步骤 1:构建向量索引

-- PostgreSQL + pgvector
CREATE EXTENSION IF NOT EXISTS vector;

CREATE TABLE documents (
  id SERIAL PRIMARY KEY,
  content TEXT,
  embedding VECTOR(1536)
);

步骤 2:存储 Embedding

from openai import OpenAI
import psycopg2

client = OpenAI()
conn = psycopg2.connect("dbname=demo user=postgres")

text = "Java 线程池通过 Executors.newFixedThreadPool 实现"
embedding = client.embeddings.create(model="text-embedding-3-small", input=text).data[0].embedding

cur = conn.cursor()
cur.execute("INSERT INTO documents (content, embedding) VALUES (%s, %s)", (text, embedding))
conn.commit()

步骤 3:语义检索

SELECT content
FROM documents
ORDER BY embedding <-> '[用户问题 embedding 向量]'
LIMIT 5;

步骤 4:调用大模型生成增强回答

context = "\n".join(top5_docs)
prompt = f"基于以下文档回答问题:\n{context}\n问题:Java 如何实现线程池?"

response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": prompt}]
)
print(response.choices[0].message["content"])

性能优化

在工程落地时,需要考虑:

  • 向量检索算法:HNSW(层次化图搜索)比 Brute Force 更快,适合百万级数据。
  • 混合搜索:BM25(关键词检索) + 向量检索,效果最佳。
  • 缓存:对热点问题可用 Redis 做答案缓存,避免重复生成。
  • 分布式部署:Milvus + Kubernetes,支持百亿级数据。

应用场景

  • 智能客服:接入 FAQ 文档,快速回答用户问题。
  • 开发者助手:本地代码库 + 向量检索,构建 AI 代码顾问。
  • 企业知识库:文档、邮件、Wiki 全量检索。
  • 金融风控:相似交易检测、欺诈模式识别。

总结

在 AI 时代,后端工程师除了要掌握传统的 数据库、微服务、分布式,还必须拥抱 向量数据库 + RAG 架构

这不仅是 AI 应用的基石,也是未来 5 年后端技术的核心竞争力。