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

相关推荐
ai小陈5 小时前
PyTorch DataLoader数据加载性能排查:GPU利用率低的实操指南
人工智能·pytorch·python·深度学习·ai·gpu算力
2601_962078039 小时前
百度双重主要上市9月1日生效,“全栈AI”如何打开估值空间?
百度·ai·双重上市·估值空间·港股通
CaseyWei13 小时前
Harness 架构 Multi‑Agent(多智能体)完整深度解析
人工智能·ai·架构·harness
eaglewgs13 小时前
关于AI书写测试用例,谈一下我的思考
人工智能·测试开发·ai·测试用例·agent·测试经验·agent测试开发
知了一笑14 小时前
企业的卷味,组织的AI味
人工智能·ai·ai工作流
icsocket15 小时前
国内测试稳定可靠的AI算力芯片测试座厂家
ai
西索斯coding15 小时前
doubao-seed-2.1-turbo 调用一直 401 怎么办?pro 版同样的 Key 却正常——5 分钟排查定位指南
java·服务器·数据库·ai
俊哥V17 小时前
每日 AI 研究简报 · 2026-09-01
人工智能·ai
Wendy不吃榴莲17 小时前
# AI短剧教程 - 《后西游记》开播后,AI影视为什么更考验“连续讲故事”?
人工智能·笔记·学习·ai·视频
木圭的AI时代指南17 小时前
AI江湖录①·斩杀线
人工智能·ai