一、先别管 RAG,先聊“幻觉”
“ChatGPT 又胡说八道了!”——这是 99% 开发者把大模型搬上生产时第一句话。
为什么?大模型本质上是“概率鹦鹉”,它没见过你的私有数据,只能一本正经地编答案。
RAG(Retrieval-Augmented Generation) 的思路简单粗暴:
先搜相关文档,再把搜索结果塞进提示词,让模型“开卷考试”。
效果立竿见影——微软、Stripe、Notion 都在用同一套范式。
二、RAGLight 是什么?能帮你省多少根头发?
传统做法(以 LangChain 为例) | RAGLight 做法 |
---|---|
安装 10+ 依赖、写 80 行胶水代码 | pip install raglight |
手动分块、手动调 prompt、手动过滤目录 | CLI 向导帮你全勾选 |
换个模型要改链、改加载器、改配置 | 统一 provider= 参数 |
想加“反思”得自己写 Agent 循环 | 一行 AgenticRAGConfig(max_steps=4) |
一句话:RAGLight = 把 RAG 做成“乐高”,拼装即可,不贴胶水。
三、5 分钟安装实录(含翻车现场)
3.1 前置条件
-
Python ≥3.9 -
能跑 Ollama(或者你有 OpenAI key) -
任意文件夹(放 PDF、代码、md 都行)
3.2 步骤
-
装 Ollama curl -fsSL https://ollama.ai/install.sh | sh ollama pull llama3.2 # 3.2B 参数,4G 显存就能跑
-
装 RAGLight pip install -U raglight # 目前 0.3.2,35 MB
-
验证 raglight --help # 出现彩色菜单就成功
翻车提示
如果你用 Apple Silicon + conda,先conda install libomp
再 pip,否则 Chroma 会报Illegal instruction: 4
。
四、零代码体验:raglight chat
raglight chat
向导会问 5 个问题:
① 文件夹路径 → ② 要忽略的目录(默认帮你勾好 node_modules 等 14 项) → ③ 向量库名字 → ④ 选嵌入模型(默认 all-MiniLM-L6-v2) → ⑤ 选 LLM(默认 llama3.2)。
索引完成后自动进入 REPL,直接开问:
> 怎么把 RAGLight 打包成 Docker?
根据 docs/Dockerfile.example,先 multi-stage build……
第一次索引 100 MB 代码大概 2 分钟(M2 Pro),之后每次启动 <3 秒。
五、Python 最小可运行示例
把下面 8 行存成 quick_start.py
,改路径即可运行:
from raglight import RAGPipeline, FolderSource
from raglight.config.settings import Settings
Settings.setup_logging(level=2) # 想看调试信息就开 3
pipeline = RAGPipeline(
knowledge_base=[FolderSource("./my_docs")],
model_name="llama3.2",
provider="ollama",
k=5) # 取 top-5 片段
pipeline.build()
print(pipeline.generate("总结 RAGLight 的核心亮点,用中文 3 条 bullet"))
运行:
python quick_start.py
输出示例:
-
安装体积仅 35 MB,无 PyTorch 强制依赖 -
内置 14 条忽略目录,代码库索引更干净 -
支持一键切换 Ollama ↔ OpenAI ↔ Mistral,无需改业务代码
六、高阶玩法 1:Agentic RAG——让模型“自我反思”
场景:技术客服,需要反复查不同子系统文档。
传统 RAG 一次检索答不全。Agentic RAG 会把“第一次回答”再扔回向量库查缺失信息,最多循环 max_steps
次。
代码:
from raglight import AgenticRAGPipeline, AgenticRAGConfig, VectorStoreConfig
from raglight.config.settings import Settings
vector_store_config = VectorStoreConfig(
embedding_model=Settings.DEFAULT_EMBEDDINGS_MODEL,
provider=Settings.HUGGINGFACE,
database=Settings.CHROMA,
persist_directory="./defaultDb"
)
config = AgenticRAGConfig(
provider=Settings.MISTRAL,
model="mistral-large-2411",
k=10,
max_steps=4, # 最多 4 轮反思
api_key="你的 Mistral Key",
system_prompt=Settings.DEFAULT_AGENT_PROMPT
)
agent = AgenticRAGPipeline(config, vector_store_config)
agent.build()
print(agent.generate("如何在 RAGLight 里同时使用 OpenAI 嵌入和 Ollama 生成?"))
实测:同一问题,普通 RAG 答对 2 个子点;Agentic 版本 4 轮后覆盖 5 个子点,答案长度翻倍,耗时增加 1.8 倍(12 s → 22 s)。
七、高阶玩法 2:RAT——用“推理模型”当裁判
RAT = Retrieval + Augmented + Thinking。
思路:先用普通 LLM 生成草稿,再用“推理模型”(Deepseek-R1、o1)做“自我裁判”,指出缺失事实 → 再检索 → 再写。
from raglight import RATPipeline, RATConfig
config = RATConfig(
llm="llama3.2:3b", # 生成模型
reasoning_llm="deepseek-r1:1.5b", # 裁判模型
reflection=3, # 裁判循环 3 次
provider=Settings.OLLAMA
)
rat = RATPipeline(config)
rat.build()
print(rat.generate("为什么 RAGLight 比 LangChain 轻量?给出数据对比"))
结果:RAT 会输出一张 Markdown 表格,列出依赖体积、内存、冷启动时间,并注明数据来源——幻觉率肉眼可见下降。
八、高阶玩法 3:MCP 服务器——把“计算器”塞进提示词
MCP(Model-Context-Protocol)是 Anthropic 开源的“插件协议”。
只要对方服务器实现 /sse
端点,就能把工具函数映射成 JSON Schema。
启动官方示例服务器(Python):
git clone https://github.com/anthropics/mcp-server-examples
cd calculator
pip install mcp
python server.py # 默认 8001 端口,/sse
RAGLight 侧加一行:
config = AgenticRAGConfig(
...
mcp_config=[{"url": "http://127.0.0.1:8001/sse"}]
)
现在你可以直接问:
> 假设 2024 年公司营收 3.45 亿元,同比增长 18%,请计算 2023 年营收。
Agent 会调用 MCP 计算器 → 返回 2.92 亿元,并给出公式。
九、Docker 部署:一次构建,团队复用
Dockerfile 仅 14 行(官方 example):
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "-m", "raglight", "chat"]
构建 & 运行:
docker build -t raglight-app .
docker run --add-host=host.docker.internal:host-gateway -it raglight-app
坑点:Ollama 默认只监听 127.0.0.1,容器内访问需加
--add-host
,或者把 Ollama 的OLLAMA_HOST=0.0.0.0
。
十、性能调优 Checklist(亲测有效)
场景 | 调优项 | 效果 |
---|---|---|
索引慢 | 把 chunk_size=1000 调到 512 |
时间 ↓ 35% |
显存不足 | 嵌入换 all-MiniLM-L6-v2 → sentence-transformers/all-MiniLM-L12-v2 |
显存 ↓ 30% |
答案太长 | 在 system_prompt 末尾加“回答不超过 200 字” |
长度 ↓ 50% |
检索 Top-K 冗余 | 加 cross_encoder_model="BAAI/bge-reranker-base" |
去重 ↑ 20% |
十一、与 LangChain、LlamaIndex 横向对比
维度 | LangChain | LlamaIndex | RAGLight |
---|---|---|---|
安装体积 | 210 MB | 180 MB | 35 MB |
零代码 CLI | ❌ | ❌ | ✅ |
默认忽略目录 | 手动写 | 手动写 | 14 条内置 |
代码库专用管道 | 自己写 Loader | 自己写 Loader | 一键 ingest |
切换 LLM | 改链 | 改服务 | 改参数 |
反思/裁判循环 | 自己写 Agent | 自己写 Agent | 配置化 |
注:数据 2024-09-29 实测,环境 Python 3.11 + M2 Pro。
十二、用户最想知道的 7 个问题(FAQ Schema)
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "RAGLight 支持哪些文件格式?",
"acceptedAnswer": {
"@type": "Answer",
"text": "PDF、TXT、MD、DOCX、Python、JavaScript、TypeScript、Go、Rust、Java、C/C++、JSON、YAML、HTML。代码文件会自动提取函数签名,单独存入 *_classes 集合方便精准跳转。"
}
},
{
"@type": "Question",
"name": "可以商用吗?",
"acceptedAnswer": {
"@type": "Answer",
"text": "可以。RAGLight 使用 MIT 许可证,与 Chroma、all-MiniLM 相同,闭源商用只需保留版权声明。"
}
},
{
"@type": "Question",
"name": "数据会外传吗?",
"acceptedAnswer": {
"@type": "Answer",
"text": "不会。嵌入和推理全过程在本地(Ollama/LMStudio),除非你把 provider 设成 OpenAI 或 Mistral。"
}
},
{
"@type": "Question",
"name": "向量库只能选 Chroma 吗?",
"acceptedAnswer": {
"@type": "Answer",
"text": "目前 v0.3.2 只有 Chroma,官方 Roadmap 已列 Qdrant 与 Weaviate,预计 0.5 版本释出。"
}
},
{
"@type": "Question",
"name": "如何更新索引?",
"acceptedAnswer": {
"@type": "Answer",
"text": "再跑一次 pipeline.build(),RAGLight 会对文件哈希去重,增量写入;也可调用 VectorStore.delete_collection() 全量重建。"
}
},
{
"@type": "Question",
"name": "Windows 能用吗?",
"acceptedAnswer": {
"@type": "Answer",
"text": "可以。Win11 + Python 3.11 通过测试,只是 Ollama 需手动安装 exe 并把路径加进 PATH。"
}
},
{
"@type": "Question",
"name": "支持多语言嵌入吗?",
"acceptedAnswer": {
"@type": "Answer",
"text": "支持。把 embedding_model 换成 paraphrase-multilingual-MiniLM-L12-v2 即可,中文、日语、西班牙语同享 384 维向量。"
}
}
]
}
十三、真实案例:我们把 3 年技术博客变成问答机器人
背景:团队 200 篇 Markdown、100 篇 Jupyter、50 份 PDF 白板稿。
步骤:
-
把所有文件丢进 ./tech_blog
目录; -
raglight chat
选“忽略图片文件夹、output、node_modules”; -
嵌入用 multilingual-MiniLM,LLM 用 llama3.2:3b
; -
上线到内部 Slack Bot(Docker + Slack Bolt)。
结果
-
平均响应 4.3 秒(含网络) -
工程师每周少 30 次“人工翻博客” -
3 周后统计,答案采纳率 87%(同事点赞 👍 算采纳)
十四、Roadmap & 如何贡献
-
v0.4 异步 API(FastAPI + WebSocket 流式返回) -
v0.5 支持 Qdrant、Weaviate,Grpc 协议 -
v0.6 可视化 UI(React + vite),拖拽上传文件夹 -
good first issue:给 Chroma 加 batch_size
参数、补单元测试、写中文 README。
如何加入:
GitHub 搜 Bessouat40/RAGLight
→ Discussion 区开帖, maintainer 24h 内回复。
十五、总结:把 RAG 做成“自来水”
RAGLight 不是第一个 RAG 框架,却是第一个把“安装、索引、聊天、Docker、反思、插件”做成一条龙的“轻量瑞士军刀”。
如果你只想:
-
让本地代码库秒变问答助手 -
5 行代码切换 OpenAI ↔ Ollama -
15 分钟给同事演示“私有 ChatPDF”