开篇:做 RAG 应用,向量数据库动辄几十上百 GB,云服务费用一个月小几千。有个开源项目挺有意思,反着来——不存向量,只存关系图,6000 万文档只要 6GB。
先说痛点
去年给公司搭 RAG 系统,踩了不少坑:
- 云服务贵:Pinecone 免费额度用完,一个月账单 200 刀起
- 本地吃资源:试过 Milvus,100 万文档就要 30 多 GB,服务器内存直接吃满
- 数据出不去:金融客户要求数据不能上云,但本地机器配置有限
后来发现 LEANN 这个项目,思路挺特别。
怎么做到的?
常规方案 vs LEANN
常规做法: 文档 → 转成向量 → 全存硬盘 → 搜索时直接查 存储:201GB(6000 万文档)
LEANN 做法: 文档 → 建图索引 → 压缩关系 → 搜索时现算 存储:6GB(6000 万文档)
具体实现:
- 存图不存向量:用 CSR 格式存文档之间的关系,类似社交网络的好友关系图
- 砍掉冗余连接:保留重要节点,删掉多余的边(有点像 PageRank 的思路)
为啥能省这么多空间?
其实很简单:用户搜索只看前几条结果。
边缘设备特别适合这个方案——硬盘小但 CPU 够用。
实际用起来怎么样
场景 1:本地文档搜索
from leann import LEANN
# 建索引 index = LEANN(backend="hnsw", dim=768) index.build(documents)
# 搜索 results = index.search("分布式事务怎么做", top_k=5)
实测:
- 占用 1.2GB(之前用 Qdrant 要 40GB)
场景 2:接入 Claude Code
配置成 MCP 服务器,给 Claude Code 加个语义搜索:
{ "mcpServers": { "leann": { "command": "python -m leann.mcp", "env": {"INDEX_PATH": "./codebase"} } } }
比 grep 关键词搜索聪明多了,能理解你想找什么。
场景 3:企业内网部署
某金融公司的案例:
几个设计亮点
后端可以换
# 数据少用 HNSW(省内存) index = LEANN(backend="hnsw")
# 数据多用 DiskANN(省硬盘) index = LEANN(backend="diskann")
代码没改,换个参数就行。
支持增量更新
# 先建基础索引 index.build(initial_docs)
# 后面慢慢加 for new_batch in stream: index.add(new_batch)
日志分析、监控这种持续写入的场景很方便。
完全离线跑
不用:
对隐私要求高的团队来说,这点挺重要。
性能对比
取舍:慢一点点,准确率低一点点,但省了 97% 空间,不用运维。
适不适合你?
适合:
- 个人知识库(Obsidian、Notion 增强)
不适合:
上手试试
pip install leann
# 五行代码搞定 from leann import LEANN index = LEANN() index.build(your_documents) index.save("my_index") results = index.search("查询内容")
云栈社区( https://yunpan.plus )有人把它接到 Logseq、Zotero 里了,本地搜索体验不错。想深入了解向量数据库原理,可以看看数据库与中间件这块的资料。
几点思考
LEANN 这个项目给了我一些启发:
现在大模型本地化、隐私计算越来越火,这类项目的思路值得关注。如果你在搭云原生架构或者研究 RAG 落地,可以参考一下。
配套资源
📌 项目仓库:https://github.com/yichuan-w/LEANN 📄 论文:https://arxiv.org/pdf/2506.08276 💻 Python 教程:https://yunpan.plus/f/26 💻 AI 教程:https://yunpan.plus/f/29
关注《云栈后端架构》,一起聊聊开源项目和技术实践
标签:#LEANN #Github #向量数据库 #RAG #本地AI #隐私计算 #边缘计算
https://yunpan.plus/t/7150-1-1
|