数据库知识篇

什么是向量数据库

AI 时代的新型数据库

传统数据库擅长精确查找——"找出名字叫张三的用户"。但 AI 时代有了新需求:"找出和这段话意思相近的文章"。这种"按意思搜索"就需要向量数据库

💡 类比:传统数据库像字典的目录,按首字母精确查找;向量数据库像你的大脑,听到"苹果"会联想到"水果"、"iPhone"、"乔布斯"。

加载图表中...

什么是向量?

在这里,向量(Embedding) 是一串数字,用来表示文本的"含义"。

"我喜欢编程" → [0.12, -0.45, 0.78, 0.33, ...]  (1536个数字)
"我热爱写代码" → [0.11, -0.44, 0.77, 0.35, ...]  (意思相近,数字接近)
"今天天气真好" → [0.89, 0.23, -0.56, 0.12, ...]  (意思不同,数字差很大)
加载图表中...

向量搜索的原理

向量搜索的核心是计算相似度——两个向量的数字越接近,含义越相似:

加载图表中...

向量数据库的应用场景

场景说明例子
语义搜索按意思而非关键词搜索搜"怎么变量命名" → 找到"代码规范"文章
AI 知识库(RAG)让 AI 基于你的文档回答问题企业内部问答机器人
推荐系统找到相似内容推荐"看了这篇文章的人还看了..."
图片搜索用文字搜图片搜"日落" → 返回日落照片
去重/聚类找到相似的内容检测重复文章
加载图表中...

RAG:让 AI 读懂你的文档

RAG(Retrieval-Augmented Generation) 是向量数据库最重要的应用——让 AI 基于你的私有文档回答问题:

加载图表中...

常见的向量数据库

数据库特点适用场景
Pinecone全托管、易用快速上手
Supabase pgvectorPostgreSQL 扩展已用 Supabase 的项目
Chroma轻量、本地运行本地开发、小项目
Weaviate开源、功能丰富生产环境
Milvus高性能、分布式大规模数据

代码示例:使用 OpenAI + Supabase 实现语义搜索

1. 生成向量

import OpenAI from "openai";

const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

// 将文本转换为向量
async function getEmbedding(text) {
  const response = await openai.embeddings.create({
    model: "text-embedding-3-small",
    input: text,
  });
  return response.data[0].embedding;  // 返回 1536 维向量
}

2. 存储向量到 Supabase

-- 启用 pgvector 扩展
CREATE EXTENSION IF NOT EXISTS vector;

-- 创建带向量字段的表
CREATE TABLE documents (
  id SERIAL PRIMARY KEY,
  content TEXT,
  embedding VECTOR(1536)  -- 1536维向量
);
// 存储文档和向量
const content = "Next.js 是一个 React 全栈框架";
const embedding = await getEmbedding(content);

await supabase.from("documents").insert({
  content,
  embedding,
});

3. 语义搜索

// 用户搜索
async function search(query) {
  const queryEmbedding = await getEmbedding(query);

  const { data } = await supabase.rpc("match_documents", {
    query_embedding: queryEmbedding,
    match_count: 5,
  });

  return data;  // 返回最相似的5条结果
}

// 搜索
const results = await search("React框架怎么用");
// 返回: ["Next.js 是一个 React 全栈框架", ...]

向量数据库 vs 传统数据库

对比传统数据库向量数据库
搜索方式精确匹配 / 模糊匹配语义相似度匹配
搜索"编程"只找包含"编程"的内容也能找到"写代码"、"开发"
数据类型文本、数字向量(高维数组)
典型应用用户管理、订单系统AI搜索、知识库、推荐
是否需要 AI不需要需要(生成向量)

🎯 AI编程小贴士:想给你的项目加上"智能搜索"功能?告诉 AI"帮我用 Supabase pgvector + OpenAI 实现文章的语义搜索",它会帮你从建表到前端搜索框一步步实现。

小结

  • 向量数据库存储文本的"含义向量",支持按意思搜索
  • 向量(Embedding) 是 AI 模型将文本转换成的一串数字
  • RAG 是最重要的应用场景——让 AI 基于你的文档回答问题
  • Supabase pgvector 可以直接在 PostgreSQL 中使用向量搜索
  • 向量数据库是 AI 应用的核心基础设施