六维教程

EdgeOne Makers RAG 与知识库

上一篇 讲了 AI 原生开发。这篇讲当下最火的一个 AI 落地模式:RAG(检索增强生成,Retrieval-Augmented Generation)。它让大模型”先查资料再回答”,解决幻觉和知识过期的问题。结合 Makers 的存储和 AI 能力,你可以很快搭起一个专属知识库。

RAG 解决什么问题

大模型的知识是训练时定死的,不知道你的私有文档、最新公告、内部手册。直接问,它要么瞎编,要么说不知道。

RAG 的思路是:回答之前,先从你的资料里检索相关片段,拼进提示词,让模型”带着资料”作答。

没有 RAG 有 RAG
答案可能编造 答案有据可依
不知道最新/私有信息 能引用你的文档
难追溯来源 可附带出处

整体流程

文档  ->  切片  ->  生成 Embedding  ->  存入向量库
                                      |
用户提问 -> 生成 Embedding -> 向量检索最相似片段 -> 拼进 Prompt -> 大模型作答

用到的 Makers 能力:

环节 用到的能力 文章
存文档 Blob / KV 存储教程
存向量 向量数据库 数据库存储
生成 Embedding AI 模型 模型与厂商
作答 AI 模型 AI 原生开发
对外服务 Cloud Functions Cloud Functions 基础

第一步:准备并切片文档

把知识库文档(产品手册、FAQ、博客)放到 Blob 存储,然后按固定长度或按语义切片。切片太大会噪音多,太小会丢上下文,一般 300–800 字一段比较稳。

第二步:生成向量并入库

调用嵌入模型把每段文本转成向量,连同原文存进向量表。

// 伪代码:切片后逐段向量化入库
import { embed, storeVector } from "makers-ai";

for (const chunk of chunks) {
  const vector = await embed(chunk.text);      // 调嵌入模型
  await storeVector({                           // 存入向量库
    text: chunk.text,
    vector,
    source: chunk.source,
  });
}

第三步:检索与作答

用户提问时,把问题也向量化,检索最相近的几段,拼进提示词交给大模型。

// 伪代码:检索 + 生成
export async function handler(request) {
  const question = (await request.json()).question;
  const qVector = await embed(question);
  const hits = await searchVector(qVector, { topK: 3 });   // 取最相似 3 段

  const context = hits.map(h => h.text).join("\n---\n");
  const answer = await chat([
    { role: "system", content: `根据以下资料回答,不要编造:\n${context}` },
    { role: "user", content: question },
  ]);

  return new Response(JSON.stringify({ answer, sources: hits.map(h => h.source) }));
}

sources 把引用来源一并返回,前端可以展示”答案来自哪几篇文档”,增强可信度。

提升效果的小技巧

技巧 说明
重排序 向量召回后用小模型再排一次,提升相关度
元信息过滤 按时间、分类先过滤再检索
分块策略 标题带进块,保留结构信息
缓存高频问题 相似问题直接返回,省 token

速查卡片

要点 说明
RAG 是什么 先检索资料,再让大模型基于资料作答
流程 切片 -> 向量化入库 -> 检索 -> 拼 Prompt -> 生成
用到能力 Blob/向量库 + 嵌入模型 + 大模型 + Functions
关键参数 切片大小、topK、是否重排序
价值 减少幻觉、可用私有/最新知识、可溯源
上一篇
EdgeOne Makers AI 原生开发
下一篇
EdgeOne Makers CI/CD 集成