模型记忆中的知识,不等同于你的资料
大模型的参数中并不包含本校讲义,却仍可能把未见过的问题回答得煞有介事。RAG 的做法是:提问时先检索本班材料,将命中的切片连同出处一并交给模型,使回答能够回溯到原文。若未检索到依据,则不应生成任何内容。
RAG(Retrieval-Augmented Generation,检索增强生成)先从资料中检索依据,再让生成模型依据这些证据作答。本课实现简短回答:仅当存在命中切片时才调用生成模型,并标注出处。流式长对话安排在第 5 课。
大模型的参数中并不包含本校讲义,却仍可能把未见过的问题回答得煞有介事。RAG 的做法是:提问时先检索本班材料,将命中的切片连同出处一并交给模型,使回答能够回溯到原文。若未检索到依据,则不应生成任何内容。
| 环节 | 常见技术 | 本课选型 |
|---|---|---|
| 切分 | 固定窗口、按分隔符、按标题层级;亦有按句子或语义边界切分的方法 | 自动窗口、自定义分隔符、Markdown 标题;默认约 800 字,重叠约 10% |
| 嵌入 | 调用兼容 OpenAI /embeddings 接口的嵌入模型,得到固定维度的浮点向量 |
仅在服务端调用课程网关;向量维度与 Qdrant collection 保持一致,密钥不下发到浏览器 |
| 向量库 | Qdrant、Milvus、pgvector、Chroma、Weaviate 等,相似度度量多采用余弦距离 | Compose 中的 Qdrant;集合 campusclaw_chunks,度量方式为余弦 |
| 关键字 | 倒排索引。英文常用 BM25;中文须借助 ngram 或分词器,否则全文索引无法正确切词 | MySQL FULLTEXT ... WITH PARSER ngram,token 长度为 2 |
| 混合排序 | 分数加权求和,或 RRF(Reciprocal Rank Fusion,倒数名次融合) | 两路先按绝对分数过滤,再执行 RRF(k = 60)。名次分不是相关性阈值 |
| 重排序 | 使用交叉编码器对前若干条候选重新打分,通常比单次向量检索更准确,但延迟更高 | 本课不实现 |
| 编排框架 | LangChain、LlamaIndex,以及 Dify 一类带可视化界面的知识库产品 | 不引入框架。由 Go 服务自行完成切分、向量嵌入与检索,便于对照规约逐条验收 |
knowledge_chunks.id——这是本课的关联方式,而非将整段原文重复存入 Qdrant。