AI 的数据准备 — 概述
本页提供一个最小可运行的 RAG 示例,帮助你在 5 分钟内跑通"文档入库 → 向量化 → 检索"的完整链路。更完整的方案选型见 AI 的数据准备。
前置条件
- 已有云器 Lakehouse 工作空间
- 已配置 AI Gateway(用于调用 Embedding 模型)
5 分钟跑通 RAG 最小示例
第 1 步:建表
CREATE TABLE knowledge_base (
id BIGINT,
title STRING,
content STRING,
embedding VECTOR(1536) -- 维度与你使用的 Embedding 模型一致
);
第 2 步:写入数据并向量化
INSERT INTO knowledge_base (id, title, content, embedding)
VALUES
(1, '向量索引介绍', '向量索引用于存储和检索高维向量,支持近似最近邻搜索。',
AI_EMBEDDING('endpoint:my_embedding', '向量索引用于存储和检索高维向量,支持近似最近邻搜索。')),
(2, '全文检索介绍', '全文检索基于倒排索引,支持中英文分词和 BM25 相关性排序。',
AI_EMBEDDING('endpoint:my_embedding', '全文检索基于倒排索引,支持中英文分词和 BM25 相关性排序。')),
(3, 'RAG 架构说明', 'RAG 将检索和生成结合,先召回相关文档,再由 LLM 生成回答。',
AI_EMBEDDING('endpoint:my_embedding', 'RAG 将检索和生成结合,先召回相关文档,再由 LLM 生成回答。'));
第 3 步:创建向量索引
CREATE VECTOR INDEX idx_embedding ON TABLE knowledge_base (embedding)
PROPERTIES ("scalar.type" = "f32", "distance.function" = "cosine_distance");
第 4 步:语义检索
-- 找与用户问题最相关的 3 条文档
SELECT id, title, content,
cosine_distance(embedding, AI_EMBEDDING('endpoint:my_embedding', '什么是向量检索')) AS distance
FROM knowledge_base
ORDER BY distance ASC
LIMIT 3;
第 5 步:生成回答(RAG)
-- 将召回的文档拼接为上下文,调用 LLM 生成回答
-- endpoint:my_embedding / endpoint:my_llm 替换为你在 AI Gateway 配置的端点名
WITH context AS (
SELECT CONCAT_WS('\n', COLLECT_LIST(content)) AS ctx
FROM (
SELECT content
FROM knowledge_base
ORDER BY cosine_distance(embedding, AI_EMBEDDING('endpoint:my_embedding', '什么是向量检索')) ASC
LIMIT 3
)
)
SELECT AI_COMPLETE(
'endpoint:my_llm',
CONCAT('根据以下资料回答问题:\n', ctx, '\n\n问题:什么是向量检索?')
) AS answer
FROM context;
下一步