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

相关推荐
大公产经晚间消息5 分钟前
“胜算未来·2026戈峻思享会”即将登陆大连
大数据·人工智能·ai
涛思数据(TDengine)1 小时前
WAIC 现场直击|烽台科技与 TDengine 战略签约:工业数据+“AI“,答案是什么?
大数据·人工智能·ai·时序数据库·tdengine·国产数据库
蓝创工坊Blue Foundry1 小时前
批量提取图片中的数字:怎样整理成一张可核对的 Excel
python·ai·ocr·excel·paddlepaddle
神奇霸王龙2 小时前
Claude Code 三层架构Subagent并发优化实战
人工智能·ai·架构·agent·ai编程·并发·claude
安逸sgr3 小时前
Agent经典面试题:Agent 安全问题有哪些?如何防止工具误调用和 Prompt Injection?
人工智能·ai·agent·智能体
lkforce3 小时前
Transformer架构下的详细计算流程模拟,精确到数字(单层单头)
人工智能·深度学习·ai·transformer
叶总没有会3 小时前
3.2 构建AI智能体项目扩展知识
java·数据库·人工智能·spring·ai
迅易科技11 小时前
从场景验证到Agent上线:迅易 × WorkBuddy如何帮助企业建设AI能力?
人工智能·ai·腾讯云
神奇霸王龙13 小时前
GB/T 46886 闭环屠夫:5 旗舰多模态 LLM 工业质检实测
人工智能·计算机视觉·ai·开源·ai编程·本地部署
三声三视14 小时前
uni-app 鸿蒙端传参变成 [object Object]?顺着源码追到 ArkTS router 底层才搞明白
人工智能·ai·uni-app·aigc·ai编程·harmonyos