AI问答助手项目
- 一、项目要做什么
- 二、整个项目的宏观流程
-
- [1、技术调研(Why + How)](#1、技术调研(Why + How))
- 2、系统架构设计(最关键)
- 3、工程搭建(开始动手)
- 4、核心功能实现
-
- [(1) 文档处理(数据准备)](#(1) 文档处理(数据准备))
- [(2) 向量化(Embedding)](#(2) 向量化(Embedding))
- [(3) 向量数据库(检索核心)](#(3) 向量数据库(检索核心))
- [(4) LLM生成(最后一步)](#(4) LLM生成(最后一步))
- 5、测试与验证
- 6、优化(进阶)
- 核心难点
一、项目要做什么
1、表层:对话系统(用户看到的)
输入问题,输出答案。 类似 ChatGPT 界面
2、中层:推理与生成(大模型)
核心能力来自大语言模型(LLM) 、 Prompt(提示词工程) ,负责"理解问题 + 生成回答"
3、底层:知识增强(关键差异点)
这里才是项目的核心价值:
- 知识库(文档 / 数据)
- 检索系统(RAG)
- 向量数据库
负责:让AI回答"你的数据 "而不是"它训练过的东西"
二、整个项目的宏观流程
1、技术调研(Why + How)
目标:搞清楚要用什么技术路线
回答3个问题:
(1)用不用大模型?
✔ 必须用(OpenAI / 开源模型)
(2)要不要私有知识?
✔ 要 → 必须用 RAG
(3)实时性要求?
高 → API模型
低 → 本地模型
最常见方案(推荐用):
LLM(OpenAI / DeepSeek)
- RAG(检索增强生成)
- 向量数据库(FAISS / Chroma)
- 后端(Python)
- 前端(简单页面或CLI)
2、系统架构设计(最关键)
标准RAG架构: 可以理解成一句话: "先查资料,再让AI回答"
用户问题
↓
Embedding(向量化)
↓
向量数据库检索(找相关文档)
↓
拼接Prompt
↓
LLM生成答案
↓
返回用户
3、工程搭建(开始动手)
技术选型(推荐新手)
| 模块 | 技术 |
|---|---|
| 语言 | Python |
| LLM | OpenAI / DeepSeek |
| 向量库 | FAISS |
| 框架 | LangChain(可选) |
| Web | FastAPI |
4、核心功能实现
分成4个子模块:
(1) 文档处理(数据准备)
关键点:每块 300~500 字,保证语义完整
输入:
PDF / Word / txt / 网页
输出:
切分后的文本块(chunk)
(2) 向量化(Embedding)
用 embedding 模型 把文本变成向量:
"Java 是一种编程语言"
↓
[0.123, -0.88, 0.55, ...]
(3) 向量数据库(检索核心)
作用:找"最相关内容 "
比如用户问:
Java 有什么特点?
系统会找:
"Java 是面向对象语言"
"Java 跨平台"
(4) LLM生成(最后一步)
拼接"问题 + 检索结果 → Prompt",让模型回答
5、测试与验证
必须验证3件事:
(1)是否能答对?
正确率
(2)是否胡说?
幻觉问题
是否稳定?
多次提问一致性
6、优化(进阶)
包括:
- Prompt优化
- 检索优化
- Chunk优化
- 多轮对话
- Agent能力
核心难点
1、为什么要切分文本?
因为模型有上下文限制,如果不切:
搜索不精准
Token爆炸
2、RAG本质是什么?
不是"让AI变聪明 ",而是 "把正确答案喂给AI"。
3、为什么不用数据库查?
普通数据库→只能精确匹配
向量数据库→能理解语义