使用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后问题解决

posted on 2026-07-03 16:05  leonshi  阅读(0)  评论(0)    收藏  举报