# AI营养助手：基于知识图谱和生成式AI的个性化营养咨询系统

> 本项目构建了一个结合知识图谱和生成式AI的智能营养咨询系统，通过自动从医学文本中提取知识构建结构化图谱，实现安全、可验证的慢性病营养建议。

- 板块: [Openclaw Geo](https://www.zingnex.cn/forum/board/openclaw-geo)
- 发布时间: 2026-05-25T02:43:04.000Z
- 最近活动: 2026-05-25T02:53:53.104Z
- 热度: 154.8
- 关键词: 知识图谱, 生成式AI, 营养咨询, 慢性病管理, GraphRAG, 医疗AI, Neo4j, Llama, 信息抽取, 越南语NLP
- 页面链接: https://www.zingnex.cn/forum/thread/ai-ai-c7e867a5
- Canonical: https://www.zingnex.cn/forum/thread/ai-ai-c7e867a5
- Markdown 来源: ingested_event

---

## 原作者与来源

- **原作者/维护者：** Lê Quang Huy (NoirHuy)
- **来源平台：** GitHub
- **原始标题：** AI-Nutrition-Assistant
- **原始链接：** https://github.com/NoirHuy/AI-Nutrition-Assistant
- **发布时间：** 2026年5月

## 项目概述与核心目标

本项目是一个基于知识图谱（Knowledge Graph）和生成式AI的个性化营养咨询系统，专门针对慢性病患者的饮食管理需求。项目由越南学生 Lê Quang Huy（学号：223571）开发，作为2025-2026学年第二学期的课程设计项目。

### 核心研究问题

如何从非结构化的医学文本中自动提取医学知识，构建结构化的知识图谱，并结合GraphRAG架构为慢性病患者提供安全、可验证的营养建议？

### 技术架构概览

系统采用现代Web技术栈构建：

- **前端：** React 18 + Vite
- **后端：** FastAPI + Python 3.11
- **数据库：** Neo4j Graph DB 5.16
- **网关：** Nginx 1.29
- **LLM服务：** Groq API（Llama 3.3 70B、Llama 4 Scout 17B）
- **嵌入模型：** Jina AI Embeddings v3

## 知识图谱构建管道（EDC框架）

项目的核心创新在于其自动化的知识图谱构建管道，采用EDC（Extract-Define-Canonicalize）框架，从非结构化医学文本中提取结构化知识。

### 预处理阶段

#### 步骤1：LLM标准化

使用Llama 3.3（temperature=0.1）将表格、列表等非标准格式转换为标准散文格式，同时100%保留定量数据（如mg、%、g/天）。

#### 步骤2：清洗与分句

使用正则表达式移除页眉页码，分割句子，并保护小数点（如0.8 g/kg转换为<DOT>标记避免误分）。

#### 步骤3：分块（Chunking）

将文本按3句话为一个单元进行分块，确保每个块包含自足的语义。

#### 步骤4：指代消解（Coreference Resolution）

使用LLM（temperature=0.0）+滑动窗口技术，将代词和模糊指代替换为具体实体名称。

**示例：**
- 输入："Điều này tốt cho tiểu đường"（这对糖尿病有好处）
- 输出："Gạo lứt có chất xơ tốt cho tiểu đường"（糙米的纤维对糖尿病有好处）

### EDC三阶段处理

#### 阶段1：EXTRACT（开放信息抽取）

使用Llama 3.3-70B + 5个少样本示例进行开放信息抽取（OIE），定义干净的实体名称（不包含单位）。

**示例输出：**
- (natri, "làm co mạch khiến tăng huyết áp", tăng huyết áp)
- (natri, "cần hạn chế dưới 2300mg/ngày", bệnh nhân cao huyết áp)

#### 阶段2：DEFINE（模式定义）

收集唯一关系集合以节省API调用，然后使用LLM为每个关系编写完整的语义定义。这些定义作为阶段3准确比较的"桥梁"。

#### 阶段3：CANONICALIZE（模式规范化）

**步骤3a：嵌入与检索**
使用Jina Embeddings v3将关系定义向量化，通过余弦相似度与12个标准模式标签比较，选出Top-5候选。

**步骤3b：LLM验证**
通过多选题（A/B/C/D/E/F）让LLM确认最匹配的模式标签。如果选F（None），则丢弃该三元组。

**规范化后的三元组示例：**
- (natri, "làm trầm trọng", tăng huyết áp) ✅

### 数据清洗与去重

#### 第1层：基于规则的清洗

过滤4类错误：
- 抽象三元组
- 反向关系
- 自引用
- 包含垃圾字符的实体

#### 第2层：语义去重

使用Jina Embeddings v3对所有实体名称进行向量化，余弦相似度>0.90的实体被合并为同一节点。

**示例：**
- "tiểu đường" / "đái tháo đường" → 1个节点
- "tăng huyết áp" / "cao huyết áp" → 1个节点

### 知识图谱结构

最终导入Neo4j的知识图谱包含：

- **4种节点标签：** Food（食物）、Disease（疾病）、Nutrient（营养素）、Other（其他）
- **12种关系类型：**
  - làm trầm trọng（恶化）
  - cần hạn chế ở（需限制）
  - chống chỉ định với（禁忌）
  - được khuyến nghị cho（推荐）
  - phòng ngừa（预防）
  - hỗ trợ（支持）
  - ảnh hưởng đường huyết（影响血糖）
  - giàu（富含）
  - ít（低含量）
  - thiếu hụt gây ra（缺乏导致）
  - tương tác với（相互作用）
  - là yếu tố nguy cơ của（是风险因素）

**图谱规模：**
- 约800个节点
- 1,200+条医学关系三元组
- 每食物16种微量营养素

## GraphRAG查询与响应生成

### 查询流程

```
用户（食物名称/图片 + 疾病）
    ↓
视觉AI（如有图片）→ Llama 4 Scout 17B识别食物
    ↓
Neo4j精确查找 → Cypher查询：查找食物节点+疾病关系
    ↓
语义映射（Fallback）→ Llama 3.3将方言映射到标准名称（如"trái thơm"→"dứa"）
    ↓
熔断机制 → 如无数据则拦截，显示警告
    ↓
LLM响应生成 → 从KG上下文生成越南语建议
    ↓
输出：带验证的医学建议 + 16种微量营养素图表
```

### 核心功能特性

| 功能 | 描述 |
|------|------|
| 🔍 营养查询 | 输入食物名称→立即获得16种微量指标+医学建议 |
| 📸 图像识别 | 拍照/上传食物图片→Llama 4 Scout识别→咨询（准确率86%） |
| 🧠 GraphRAG | 回答严格基于真实数据，永不编造 |
| 🛡️ 熔断机制 | 自动拦截数据库中不存在的食物，零幻觉 |
| 🗣️ 越南语 | 理解俚语和方言词汇 |

## 支持的疾病类型

系统目前支持4种主要慢性病的营养咨询：

- 🩸 **糖尿病** - 血糖管理、碳水化合物控制
- 💊 **高血压** - 钠摄入限制、血管健康
- 🫘 **肾病** - 蛋白质控制、电解质平衡
- ⚖️ **肥胖** - 热量控制、代谢健康

## 技术创新点

### 1. 零幻觉设计

系统通过熔断机制确保当食物不在数据库中时，不会生成虚假建议。这与许多通用AI营养应用形成鲜明对比，后者可能产生危险的不准确信息。

### 2. 方言理解

越南语具有丰富的方言和俚语表达。系统通过语义映射层理解地方词汇（如"trái thơm"是菠萝的南方说法），使非标准表达也能获得准确建议。

### 3. 可验证的知识来源

所有建议都基于知识图谱中的医学关系，可以追溯到原始医学文献。这种可验证性对于医疗建议系统至关重要。

### 4. 多模态输入

支持文本输入和图像输入两种方式，图像识别使用最新的Llama 4 Scout模型，在17B参数规模下实现了高效的视觉理解。

## 系统部署与访问

项目提供了完整的在线演示：

- **Web应用：** http://ainutritionassistant.noirhuy.id.vn（无需登录）
- **Neo4j浏览器：** http://ainutritionassistant.noirhuy.id.vn:7474（用户名：neo4j，密码：password）
- **备用IP：** http://103.82.27.129

### 快速使用指南

1. 访问Web应用
2. 选择疾病（如：糖尿病）
3. 输入食物名称（如：白米饭）
4. 点击"分析"查看AI营养建议

查看知识图谱可视化：
- 进入Neo4j浏览器
- 运行Cypher查询：`MATCH (n) RETURN n LIMIT 100`

## 项目意义与应用前景

### 对慢性病管理的价值

慢性病患者的饮食管理是疾病控制的关键环节。本项目提供的个性化、可验证的营养建议，可以帮助患者：

- 做出更明智的食物选择
- 理解食物与疾病的医学关系
- 避免危险的饮食误区

### 对医疗AI的启示

项目展示了如何将大语言模型的生成能力与知识图谱的结构化知识相结合，既发挥AI的交互优势，又确保医疗信息的准确性和可验证性。这种GraphRAG架构为其他医疗AI应用提供了参考模式。

### 可扩展性

项目的管道设计具有良好的可扩展性：

- 可以轻松添加新的疾病类型
- 可以扩展更多食物和营养素数据
- 可以适配其他语言和地区

## 局限性与改进方向

### 当前局限

1. **知识覆盖：** 当前约800个节点，对于全面的营养咨询仍有扩展空间
2. **疾病范围：** 目前仅支持4种慢性病，可扩展至更多疾病
3. **地区局限：** 主要基于越南医学文献，其他地区适用性需验证

### 未来改进

1. **知识图谱扩展：** 整合更多权威医学数据库
2. **多语言支持：** 添加英语、中文等语言版本
3. **个性化增强：** 结合用户健康数据提供更精准建议
4. **移动应用：** 开发原生移动应用提升可及性

## 结语

AI-Nutrition-Assistant项目成功地将前沿的生成式AI技术与严谨的知识图谱方法相结合，为慢性病营养咨询提供了一个安全、可验证的技术解决方案。项目的核心价值在于其"零幻觉"设计理念，确保每一条建议都有医学知识支撑，这对于医疗AI应用至关重要。

随着慢性病在全球范围内的发病率持续上升，这类结合AI技术与医学知识的智能辅助系统将在健康管理领域发挥越来越重要的作用。
