30 分钟搭好本地知识库:用 Chroma 向量数据库玩转 LLM Universe
【免费下载链接】llm-universe本项目是一个面向小白开发者的大模型应用开发教程,在线阅读地址:https://datawhalechina.github.io/llm-universe/项目地址: https://gitcode.com/GitHub_Trending/ll/llm-universe
工作笔记、课程资料、聊天记录散落在各个文件夹,想找点东西全靠翻。大模型应用开发教程 LLM Universe 给了一条捷径:把文档喂进 Chroma 向量数据库,之后直接用大白话提问,系统自动从你的资料里给出答案。搭好一个能用的本地知识库,全程不超过半小时。
⚡ 向量数据库安装:一行 pip 搞定 Chroma
很多人以为向量数据库安装要申请服务器、买云服务,Chroma 不需要。它是专为大模型应用设计的轻量级向量数据库,数据默认写进本地磁盘,pip 装完就能跑:
pip install chromadb数据落在哪?LLM Universe 里的 Chroma 数据目录就是 data_base/vector_db/chroma/,打开能看到 chroma.sqlite3 等文件——你存进去的每段文字,都以向量形式躺在里面。
📥 三步喂饱你的知识库
文档不能整篇塞给模型,上下文窗口有限,长文会被截断。LLM Universe 的做法是三步走:先用分块器把长文切成几百字的小块(文档分块),再用 Embedding 模型把每块文字转成一串向量,最后批量入库。小块的好处是模型能完整读完每一块,回答也更聚焦。
切分参数怎么调?notebook/C3 搭建知识库/C3.ipynb 里有完整演示,切分效果长这样:
切完小块,建集合、入库,十几行代码:
import chromadb client = chromadb.PersistentClient(path="data_base/vector_db/chroma") collection = client.get_or_create_collection("my_knowledge") collection.add( documents=["分块1内容", "分块2内容"], metadatas=[{"source": "文档1"}, {"source": "文档2"}], ids=["id1", "id2"], )🎯 向量查询怎么写:用大白话提问
入库之后,查询比想象中简单——不用写 SQL,直接把你想问的句子传进去:
results = collection.query( query_texts=["LLM Universe 支持哪些模型?"], n_results=2, )查询句会走同一个 Embedding 模型变成向量,Chroma 拿它和库里所有向量比距离,把最接近的前 N 块文字取出来。n_results控制取回几块,2 就够回答大部分问题,想要更全面的答案可以调大。"queen 和 king 语义接近、apple 和 orange 也很像",这种相似度判断正是向量查询的底层逻辑:
🚀 实战:个人知识库助手长什么样
前面三步拼起来,就是一个能用的个人知识库助手。仓库里的 docs/C6/案例1:个人知识库助手.md 演示了完整流程:右侧拖入文件、点"知识库文件向量化",左侧就能直接提问,答案都来自你自己的资料。
接下来可以做两件事
- 把 C3.ipynb 里的
chunk_size从 4000 改成 1000,对比两次查询的召回质量,直观感受分块大小的影响; - 翻 docs/C3/C3.md 的向量数据库章节,看看文档量变大时如何做向量索引优化。
【免费下载链接】llm-universe本项目是一个面向小白开发者的大模型应用开发教程,在线阅读地址:https://datawhalechina.github.io/llm-universe/项目地址: https://gitcode.com/GitHub_Trending/ll/llm-universe
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考