Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

农业知识问答与知识图谱 Demo

一个面向面试展示的农业领域 RAG 问答 Demo。项目使用 Flask 搭建 Web 应用,结合轻量文本检索、知识图谱实体关联和 Ollama 本地大模型,实现农业病害、缺素和土壤管理问题的问答演示。

项目亮点

  • RAG 问答流程:先检索农业知识库,再把召回证据作为上下文交给本地模型生成答案。
  • 混合检索:使用轻量 TF-IDF 风格文本检索 + 知识图谱实体关系扩展召回。
  • 本地大模型:默认接入 Ollama 的 qwen2.5:3b,不依赖云端 API。
  • 知识图谱可视化:前端展示相关实体、关系边和检索证据,增强可解释性。
  • 多轮上下文:使用 Flask session 保存最近对话,支持连续追问。
  • 可选 Neo4j:内置 /api/neo4j/sync,配置后可将三元组同步到 Neo4j。

技术栈

  • Python 3.10+
  • Flask
  • Ollama / Qwen2.5
  • Neo4j Python Driver(可选)
  • HTML / CSS / 原生 JavaScript / Canvas

快速运行

Windows 可以直接双击:

start_demo.bat

或手动运行:

python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python app.py

浏览器打开:

http://127.0.0.1:5000

Ollama 本地模型配置

项目会优先调用本机 Ollama:

http://localhost:11434/api/generate

推荐模型:

ollama pull qwen2.5:3b

也可以通过 .env 或环境变量指定:

OLLAMA_HOST=http://localhost:11434
OLLAMA_MODEL=qwen2.5:3b

模型选择逻辑:

  1. 如果设置了 OLLAMA_MODEL,优先使用指定模型。
  2. 否则自动读取本机 Ollama 模型列表,优先选择 Qwen 系列。
  3. 如果没有 Qwen,则使用 llama3.2
  4. 如果 Ollama 不可用,自动退回规则摘要模型,保证 Demo 可演示。

项目结构

.
├── app.py
├── data/
│   └── agri_knowledge.json
├── scripts/
│   └── evaluate_demo.py
├── static/
│   ├── app.js
│   └── styles.css
├── templates/
│   └── index.html
├── .env.example
├── .gitignore
├── requirements.txt
├── start_demo.bat
└── README.md

核心流程

  1. 用户在页面输入农业问题。
  2. 前端调用 /api/ask
  3. 后端执行混合检索:
    • 文本检索召回相关知识文档。
    • 图谱检索根据作物、病害、症状等实体扩展关联知识。
  4. 合并召回结果并生成知识上下文。
  5. 调用 Ollama 本地模型生成答案。
  6. 前端展示答案、检索证据、响应耗时和知识图谱。

主要接口

接口 方法 说明
/ GET Web 页面
/api/ask POST 问答接口
/api/examples GET 示例问题
/api/health GET 健康检查
/api/reset POST 清空多轮对话
/api/neo4j/sync POST 同步三元组到 Neo4j

简单验证

python scripts/evaluate_demo.py

脚本会验证典型问题是否能召回正确知识点,例如稻瘟病、玉米缺氮、番茄晚疫病和黄瓜霜霉病。

可选:同步 Neo4j

配置环境变量:

set NEO4J_URI=bolt://localhost:7687
set NEO4J_USER=neo4j
set NEO4J_PASSWORD=your_password

启动服务后调用:

curl -X POST http://127.0.0.1:5000/api/neo4j/sync

后续扩展

  • 将轻量检索替换为 FAISS 或 Chroma 向量库。
  • 使用 nomic-embed-text 或中文 embedding 模型生成真实向量。
  • 将内存图谱查询替换为 Neo4j Cypher 查询。
  • 增加更多农业知识来源、测试集和指标统计。
  • 加入用户反馈,记录低质量回答并迭代知识库。

About

基于 LangChain 的智能农业知识问答系统

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages