juechafun/00-临时碎片/20260529-备忘-觉察知识-KeepAsking调研.md

323 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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