16 KiB
#领域/未知
#复盘/0 #临时/备忘 #状态/待处理
一句话描述
[KeepAsking调研技术栈____]
结合你个人极客知识管理、工程化落地、先功能后隐私、拒绝网红工具、坚守原子化 / 不造轮子的核心诉求,先做核心认知纠偏,再逐层打磨整套技术选型,明确:工业级 ≠ 商业闭源,最终给出「工业级开源组件为主、纯商业工业软件完全摒弃、网红小众工具彻底排除」的完整方案,同时敲定 LangChain / LlamaIndex 两大框架的取舍与搭配。
一、先统一核心概念(选型前提,避免认知偏差)
在个人知识管理 + 自托管 RAG 这个场景里,把工具分为三类,这是后续所有选型的判定标准:
表格
| 分类 | 定义 & 特征 | 适配你的场景 |
|---|---|---|
| 1. 工业级开源组件(首选) | 开源、全球生产环境广泛使用、社区长期稳定维护、接口向下强兼容、迭代保守(只修 Bug / 优化性能,不堆砌花哨功能)、单一职责、可自托管。 代表:Click、LangChain、LlamaIndex、Sentence-Transformers、Chroma、Qdrant、Ollama |
✅ 全场核心选型 兼顾工程规范、稳定性、免费、可演进、无热度绑架,完美匹配个人极客长期使用。 |
| 2. 纯商业工业软件(完全摒弃) | 闭源 / 付费、面向企业集群 / 多租户 / 高可用场景、功能臃肿(团队协作、权限集群、商用运维)、数据易绑定厂商、无法完全自托管。 代表:Pinecone 商业版、Milvus Cloud、商用闭源 RAG 平台、专属付费大模型服务 |
❌ 不选用 个人场景用不上企业级冗余能力,付费 + 厂商绑定违背「数据自主、渐进自托管」诉求。 |
| 3. 网红 / 小众开源工具(彻底排除) | 短期热度高、迭代激进、接口频繁破坏性变更、堆砌 UI / 特效 / 娱乐化功能、维护周期不稳定、社区生命周期短。 代表:Typer、Python Fire、各类新兴小众 RAG 玩具、界面优先的一体化笔记工具 |
❌ 不选用 会被热度裹挟,后续被迫迁移、重构,和你长期稳定的目标冲突。 |
顶层总策略(最终定调)
- 全域基准:全部选用 工业级开源组件,拒绝商业闭源、拒绝网红玩具;
- 技术栈收敛:主力语言固定 Python,不新增其他开发语言;交互入口固定为 Click CLI,不散落零散脚本;
- 演进路线:先对接在线兼容 API快速实现功能,后期无缝切换本地自托管保障隐私,两套模式代码基本不动;
- 架构原则:分层解耦、组件可插拔、原子化单一职责;仅在上层写胶水 / 规则 / CLI 业务代码,底层核心算法 / 能力完全复用开源组件,严守「不造轮子」红线;
- 自动化边界:所有批量操作保留
dry-run预览、日志、备份回滚,坚持「人主导决策,机器执行机械动作」。
二、逐层深度打磨技术选型(全栈落地版)
按照架构分层从底层数据 → 基础组件 → 核心 RAG 链路 → 大模型层 → 交互入口逐层梳理,标注选型理由、备选、排除项、工业属性。
分层 1:原始数据存储层(知识本体,永久不变)
选型
- 载体:本地文件系统 + 标准 Markdown + Frontmatter 元数据
说明
- 这是通用工业级纯文本格式,跨平台、无软件绑定、所有开源组件原生兼容;
- 严格坚守:不使用 HTML / 私有富文本 / 工具专属格式(你反感的花里胡哨格式彻底排除);
- 存量多格式素材单独归档为「原始素材目录」,不侵入核心 MD 知识库,格式混乱风险隔离。
备选 & 排除
- 无备选:纯文本 MD 是个人 / 工业文档存储的最优解;
- 排除:各类笔记软件私有格式、在线文档格式。
分层 2:交互入口层(CLI 命令行,人机交互唯一入口)
主选型:Click
对比 & 理由
-
工业属性:Python 生态事实标准 CLI 框架,Flask 作者维护,10 + 年稳定迭代,接口无破坏性变更,纯原子能力(仅做参数解析 + 命令路由),无多余美化功能;
-
适配你的规则:天然支持子命令 = 原子操作,完美实现单一入口、功能拆分;
-
对比其他方案:
argparse(Python 内置):零依赖,极简,但代码冗余、扩展不便,适合超轻量场景,作为备选;Typer / Python Fire:网红 CLI 库,堆砌自动 UI、颜色、动画等花哨功能,直接排除。
最终结论
- 主力:Click(功能与稳定性平衡,工业标准);
- 极简兜底:
argparse(仅当你追求零第三方依赖时切换)。
分层 3:文档处理 & RAG 框架层(核心检索 / 编排层,L 开头二选一 / 组合)
你重点关注的 LangChain、LlamaIndex 均属于工业级开源 RAG 框架,二者都不是网红工具,定位互补,下面明确取舍:
两款框架核心定位对比
表格
| 维度 | LangChain | LlamaIndex |
|---|---|---|
| 核心设计 | 通用工作流编排框架,生态极丰富,偏向「工具调用、复杂 Agent、多链路串联」 | 检索优先框架,专为文档索引、语义检索、结构化知识设计 |
| Markdown 适配 | 依赖第三方 Loader,对 MD 标题 / 层级结构化解析一般 | 内置专属 MarkdownNodeParser,原生保留文档结构、层级、代码块,MD 体验最优 |
| 检索能力 | 基础向量检索为主,复杂查询需二次开发 | 原生支持混合检索、多跳查询、节点关联,检索能力更强 |
| 复杂度 | 功能全面,配置项多 | 聚焦 RAG 核心,上手更轻,冗余功能少 |
| 工业属性 | 顶级工业开源,企业 / 个人大规模使用 | 顶级工业开源,RAG 领域标杆,长期稳定维护 |
结合你的场景(纯知识管理、以 RAG 检索为核心,暂不需要复杂 Agent)给出三套方案
方案 A(首选,推荐):主力 LlamaIndex
- 适用:90% 你的日常场景(MD 文档索引、语义检索、RAG 问答、结构化知识提取);
- 理由:天生为「私有文档知识库」设计,MD 解析、检索链路开箱即用,代码更简洁,无多余 Agent 冗余功能,贴合你「功能克制」的理念。
方案 B(进阶组合):LlamaIndex(检索层) + LangChain(编排层)
- 适用:后续需要增加「多工具联动、复杂流程编排、简易 Agent」(比如检索 + 文件操作联动);
- 架构:
MD → LlamaIndex(索引/检索) → LangChain(规则/流程编排) → LLM; - 优势:各司其职,不重复造功能,工业界经典组合模式。
方案 C(备选):纯 LangChain
- 适用:你后续计划深度探索 Agent、多工具调用,当前 RAG 仅作为附属能力;
- 短板:MD 结构化解析需要额外配置,检索能力不如 LlamaIndex 原生强大。
最终建议
现阶段直接选用 LlamaIndex;未来有复杂流程 / 工具联动需求,再叠加 LangChain,不一开始过度引入复杂度。
分层 4:嵌入层(文本向量化,语义理解核心)
选型组合
- 推理库:Sentence-Transformers(工业级开源嵌入推理标准库,全球通用,迭代保守);
- 嵌入模型:BAAI/bge-large-zh(中文领域工业基线开源模型,学术 + 工业场景广泛采用,中文语义效果公认优秀)。
说明
- 整套组合纯离线可运行,后期自托管无任何依赖;
- 拒绝频繁换新兴小众嵌入模型(热度模型普遍生命周期短),固定 BGE 系列作为长期基线;
- 仅调用库与模型,不自研向量化、归一化逻辑(严守不造轮子红线)。
分层 5:向量数据库层(向量存储 & 相似度检索)
两款均为工业级开源向量库,根据你的数据体量二选一,支持无缝迁移(代码改动极小):
选项 1:Chroma(现阶段主力,强推荐)
- 形态:文件型向量库,零额外部署、无独立进程、运维极简;
- 适配:单机个人知识库,文档量 0 ~ 2000 篇;
- 优势:轻量化、和 Python 生态深度绑定、配置最少,完全匹配个人极客轻量化诉求。
选项 2:Qdrant(中长期备选)
- 形态:独立服务型向量库,Docker 一键部署;
- 适配:文档量 > 2000 篇、追求更高检索性能、未来有小范围扩容需求;
- 优势:工业生产级性能、支持复杂元数据过滤、分布式扩展;
- 迁移说明:两者 Python SDK 调用逻辑高度相似,后期迁移成本极低。
排除项
- 商业向量库(Pinecone、Milvus Cloud):付费 + 厂商绑定,排除;
- 小众向量库:维护不稳定,排除。
分层 6:大模型层(推理 + 调用,分「在线 API」「本地自托管」双模式)
遵循你「先实现功能,再考虑隐私自托管」的演进思路,整套链路统一、代码无缝切换,全部选用工业级开源组件。
6.1 统一调用抽象层(核心)
主选型:LiteLLM
-
定位:工业级开源多模型统一调用网关,一套接口兼容百余种在线 / 本地模型;
-
价值:
- 在线 API、本地模型切换仅改配置,业务代码完全不动;
- 内置超时、重试、日志、成本统计、故障熔断(工业级容错能力);
- 原生兼容 LangChain / LlamaIndex,集成零障碍。
备选:OpenAI 官方 SDK
- 场景:仅使用 OpenAI 系模型,不需要多模型切换;
- 短板:多模型适配能力弱,后期切换本地模型需要小幅改代码。
6.2 在线模型(短期快速落地)
- 选型原则:选用 OpenAI 接口兼容的国内开源 / 合规大模型 API;
- 推荐服务:DeepSeek、智谱 AI、通义千问等(中文优化好、接口标准、合规稳定);
- 规则:仅作为过渡方案,用来快速验证 RAG 功能,不长期依赖。
6.3 本地自托管(中长期隐私方案)
1. 本地推理服务:Ollama
- 定位:工业级轻量 LLM 部署工具,一行命令部署模型、提供标准 OpenAI 兼容 API;
- 优势:极简运维、资源占用低、个人 PC / 服务器均可运行,目前本地模型部署的事实标准。
2. 本地开源大模型(轻量 7B 级,个人硬件友好)
- 首选:Qwen2.5-7B(通义千问开源版,中文能力顶尖、推理速度快、社区活跃);
- 备选:Llama 3-8B(通用能力强,长文本支持好);
- 规则:固定 7B 量级模型,不盲目上更大参数模型(硬件成本、运维复杂度上升,个人场景收益低)。
6.4 明确排除
- 闭源商业大模型专属 SDK、小众推理框架、网红本地模型。
分层 7:辅助运维组件(工业级轻量化配套,不额外引入新工具)
全部使用系统原生 + Python 标准库,零第三方依赖,延续极简原则:
- 日志:Python 内置
logging(工业标准日志库); - 文件备份 / 回滚:Python 脚本 + 系统原生命令;
- 定时增量同步 / 巡检:Linux
cron/ Windows 计划任务(系统原生定时服务); - 安全过滤:Python 代码实现目录 / 文件黑白名单(延续之前安全规则)。
三、最终完整版技术栈清单(打磨定稿,可长期使用)
🔹 核心工业级开源组件(必选,全套稳定无热度绑架)
表格
| 层级 | 组件 / 框架 | 版本 / 选型 | 核心作用 |
|---|---|---|---|
| 数据层 | 本地文件 + 标准 Markdown | 通用格式 | 原始知识存储,Frontmatter 元数据 |
| 交互层 | Click | 最新稳定版 | 唯一 CLI 入口,原子子命令调度 |
| RAG 框架 | LlamaIndex | 正式版 | MD 解析、索引构建、语义检索(主力) |
| 嵌入层 | Sentence-Transformers + bge-large-zh | 稳定版模型 | 文本向量化,语义编码 |
| 向量库 | Chroma | 持久化本地版 | 向量存储、相似度检索(现阶段) |
| 模型调用 | LiteLLM | 最新稳定版 | 大模型统一调用、容错、多模型适配 |
| 本地推理 | Ollama | 正式版 | 本地 LLM 部署、API 服务 |
| 本地 LLM | Qwen2.5-7B | 开源量化版 | 离线问答、内容摘要、标签建议 |
🔹 备选组件(同等级工业开源,按需平滑切换)
- CLI:Click →
argparse(追求零第三方依赖) - 向量库:Chroma → Qdrant(文档超 2000 篇,提升性能)
- RAG 框架:LlamaIndex → 叠加 LangChain(新增复杂工作流 / Agent)
- 模型调用:LiteLLM → OpenAI SDK(仅使用 OpenAI 生态)
🔹 永久排除清单(商业 / 网红,坚决不碰)
- 纯商业工业软件:Pinecone 商业版、Milvus Cloud、闭源商用 RAG 平台;
- 网红工具:Typer、Python Fire、各类界面优先的一体化知识库、小众 RAG 玩具;
- 花哨格式:HTML、私有富文本、在线文档格式。
四、关键架构 & 规则重申(守住你的核心原则)
1. 完整数据流(永久架构,无需重构)
plaintext
本地MD文件
↓
LlamaIndex(解析MD + 切片 + 提取元数据)
↓
Sentence-Transformers + BGE(文本向量化)
↓
Chroma(向量+元数据存储)
# 检索&问答链路
用户输入 → Click CLI → 检索(grep精准检索 + 向量语义检索) → LiteLLM → LLM(在线/本地) → 结果输出
2. 造轮子红线(强制执行)
✅ 允许编写:CLI 命令逻辑、文件遍历、增量同步、黑白名单、dry-run 预览、日志、异常捕获、调用规则(纯业务 / 胶水代码)
❌ 禁止编写:文本切片算法、向量计算、相似度检索、模型推理、向量索引存储(底层核心能力,完全复用开源组件)
3. 人机分工红线(解决「自动化不放心」)
✅ 机器执行:文件移动、格式转换、索引同步、检索执行、摘要 / 标签建议
❌ 机器禁止:内容审核、价值判断、正文修改、自动打标签、文件删除(知识决策全人工)
4. 模型演进规则
- 短期(0~1 个月):LiteLLM 对接在线 API,快速跑通全流程;
- 中期(1~3 个月):部署 Ollama+Qwen2.5-7B,切换为本地自托管,数据隐私闭环;
- 长期:组件仅做 Bug 修复式升级,不追逐新版本、新功能。
五、方案核心优势(匹配你所有诉求)
- 无热度绑架:全套都是行业长期使用的工业级开源组件,没有网红工具,架构十年可稳定使用,无需反复迁移;
- 技术栈极简收敛:主力仅 Python,单一 CLI 入口,学习、维护成本极低;
- 完全可控:数据本地存储、代码全可见、自动化带预览 / 回滚,彻底摆脱黑盒焦虑;
- 演进灵活:在线 / 本地模型一键切换、向量库可平滑迁移、框架可组合扩展;
- 克制无冗余:所有组件只做单一职责,没有 UI 美化、社区、多租户等无关花哨功能;
- 零重复造轮子:底层能力全部复用成熟开源,仅做上层业务编排,工程效率最大化。
六、分阶段落地执行(极简步骤)
阶段 1:基础环境搭建(1 天)
- 规划 MD 目录、统一 Frontmatter 元数据规范;
- 安装依赖:
click、llama-index、sentence-transformers、chromadb、litellm; - 下载
bge-large-zh模型,测试嵌入能力。
阶段 2:RAG 核心链路跑通(1~2 天)
- 用 LlamaIndex 实现 MD 加载、切片、入库 Chroma;
- 配置 LiteLLM 对接在线大模型 API,完成 RAG 问答;
- 扩展 Click 子命令(同步、检索、问答、清理),新增
dry-run预览。
阶段 3:安全与运维加固(1 天)
- 配置文件黑白名单、全链路日志;
- 编写备份 / 回滚脚本,配置定时增量同步。
阶段 4:切换本地自托管(按需推进)
- 安装 Ollama,拉取
qwen2.5:7b; - 修改 LiteLLM 配置,切换为本地模型,完成隐私闭环。