使用embedchain快速建立rag知识库,本地大模型

初学RAG搭建知识库,强烈建议先利用embedchain这个开源的RAG框架,短短几行代码就能让你快速建立一个私人知识库,并支持随时增加知识源,是理想的学习和使用RAG知识的开源利器

最简单的解决方式:

  • 框架: Embedchain
  • LLM: Ollama
  • 嵌入式模型: nomic-embed-text 或 bge-m3
  • 向量数据库: ChromaDB (默认)

按照步骤依次进行:

安装ollama等模型:

复制代码
pip install embedchain ollama chromadb sentence-transformers

Windows平台, 需要去https://ollama.com/download 下载 Windows 安装程序(.exe),运行安装,务必在安装过程中勾选"Add Ollama to your PATH"。

下载大模型到本地:

复制代码
ollama pull llama3.2

下载embedding model:

复制代码
ollama pull nomic-embed-text

启动ollama

复制代码
ollama serve
测试ollama是否启动
curl http://localhost:11434/api/tags

设置embedchain :

复制代码
from embedchain import App
import os
os.environ["OPENAI_API_KEY"] = "ollama"  # Ollama 不校验,填任意值
os.environ["OPENAI_API_BASE"] = "http://localhost:11434/v1"
config = {
    "vectordb": {
        "provider": "chroma",
        "config": {
            "collection_name": "ollama_openai_compat"
        }
    },
    "llm": {
        "provider": "openai",          # 使用 openai provider
        "config": {
            "model": "llama3.2",       # 模型名称
            "temperature": 0.1,
            "max_tokens": 2000
        }
    },
    "embedder": {
        "provider": "openai",
        "config": {
            "model": "nomic-embed-text",  # 嵌入模型
        }
    }
}

app = App.from_config(config=config)

增加文档:

复制代码
app.add(r'E:\拿破仑传.pdf', data_type='pdf_file')

增加问题:

复制代码
response = app.query("拿破仑去世时间")
print(response)

完整的代码:

复制代码
from embedchain import App
import os
os.environ["OPENAI_API_KEY"] = "ollama"  # Ollama 不校验,填任意值
os.environ["OPENAI_API_BASE"] = "http://localhost:11434/v1"
config = {
    "vectordb": {
        "provider": "chroma",
        "config": {
            "collection_name": "ollama_openai_compat"
        }
    },
    "llm": {
        "provider": "openai",          # 使用 openai provider
        "config": {
            "model": "llama3.2",       # 模型名称
            "temperature": 0.1,
            "max_tokens": 2000
        }
    },
    "embedder": {
        "provider": "openai",
        "config": {
            "model": "nomic-embed-text",  # 嵌入模型
        }
    }
}

app = App.from_config(config=config)
app.add(r'E:\拿破仑传.pdf', data_type='pdf_file')
response = app.query("拿破仑去世时间")
print(response)

最后输出答案:

复制代码
拿破仑于1815年去世。

embedchain github地址:https://github.com/hypier/embedchain

总结一下遇到的问题:

问题1:依赖包版本不兼容

这个问题最好是单独建立一套虚拟环境,然后在这套虚拟环境下执行上面的命令

问题2:sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) table ec_chat_history already exists

这个是因为我在测试时已经建立过一次向量数据库,手动删除embedchain.db后问题解决

相关推荐
感谢地心引力3 天前
我用 Doubao-Seed-2.1-pro 做了一个深度融入 AI 功能的本地知识库软件
ai·开源·seed·markdown·豆包
阿昌喜欢吃黄桃3 天前
提示词工程:User Prompt 与 System Prompt
ai·prompt·提示词·提示词工程
AI产品测评官3 天前
海内外AI招聘工具分赛道横向对比:五大品类的技术路线与选型参考
人工智能·ai·求职招聘
俊哥V3 天前
每日 AI 研究简报 · 2026-09-21
人工智能·ai
omenkk73 天前
上下文工程:优化系统提示词,利用 KV Cache 降低 Token 成本
ai
数据库小学妹3 天前
AI数据库是什么?一次 RAG 召回失败的排查与选型(附 SQL)
向量检索·rag·ai数据库·融合数据库·ai原生数据库
代码方舟3 天前
零信任架构实战:基于天远手机在网状态V即时版构建自动化通信分发网关
人工智能·ai·工具分享
MicrosoftReactor3 天前
技术速递|GitHub Copilot App 入门指南:使用 Diff、终端和浏览器
ai·copilot·agent
TechEdu2026063 天前
[人工智能]人工智能时代的零日漏洞与零日攻击
人工智能·网络安全·ai·信息安全