医疗援助助手

一款AI驱动的医疗援助助手,帮助南非人理解和比较来自三大提供商的医疗援助计划。

  • by ThandoSomacele
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 ThandoSomacele/insurance-mcp

使用说明

🇿🇦 CoverCheck-医疗援助助理

您的南非医疗援助问题得到了准确、最新的信息回答。

一个现代的人工智能医疗援助助理,帮助南非人了解和比较前三大医疗援助提供者的医疗援助计划。基于高质量数据、语义搜索和RAG(检索增强生成)构建。

🎯 项目状态

✅ 第3阶段完成: 配备现代用户界面的生产就绪医疗援助助理

  • ✅ 第一阶段: 来自前三大提供商的高质量抓取(23/26份文件,88%的质量)
  • ✅ 第二阶段: PostgreSQL+pgvector数据库、语义搜索、云LLM集成
  • ✅ 第三阶段: 具有提供商选择器、增强引用和响应式设计的公共平台
  • 🔄 第4阶段(当前): 部署准备和优化

该应用程序功能正常,已准备好进行测试!

✨ 特性

特点

  • 🏥 前三大SA提供商 -Discovery Health、Bonitas医疗基金、Momentum Health
  • 💬 人工智能聊天 -用自然语言提问,获得准确答案
  • 🔍 语义搜索 -查询扩展和意图检测,以获得更好的结果
  • 📚 来源引用 -每个答案都有官方文件支持,并附有链接
  • 🎨 现代用户界面 -Next.js/Vercel灵感设计,暗模式
  • 📱 响应式 -针对台式机、平板电脑和移动设备进行了优化
  • 🎯 提供商筛选器 -搜索所有提供商或专注于一个提供商
  • ⚡ 实时流媒体 -答案在生成时源源不断地流入
  • 🇿🇦 SA上下文 -兰德(R)、南非英语拼写和医疗援助术语

技术特性

  • 🗄️ 矢量数据库 -PostgreSQL与pgvector用于语义搜索
  • 🤖 RAG系统 -基于云LLM的检索增强生成
  • 🔄 回退策略 -多种LLM型号(Gemini、Llama、Mistral)
  • 🎭 智能重新排名 -基于意图的结果提升
  • 📊 查询扩展 -自动同义词和相关术语扩展

🚀 快速开始

先决条件

  • Node.js 18+
  • npm或纱线
  • 带pgvector扩展的PostgreSQL(适用于第2+阶段)
  • Ollama(用于本地嵌入)

安装

# Clone the repository
git clone https://github.com/ThandoSomacele/covercheck.git
cd covercheck

# Install dependencies
npm install

# Set up environment variables
cp .env.example .env
# Edit .env and add your API keys and database connection string

环境变量

创建一个 .env 项目根目录中的文件,包含以下变量:

# Database Configuration
DB_CONNECTION_STRING=postgresql://user:password@host:port/database

# OpenRouter API Configuration
OPENROUTER_API_KEY=sk-or-v1-your_api_key_here

⚠️ 安全警告:

  • 永远不要承诺你的 .env 文件到git
  • 切勿在源代码中硬编码API密钥或机密
  • 这 .env 文件已在 .gitignore 为了保护你
  • 使用 .env.example 作为模板(它不包含真正的秘密)

运行应用程序

# Start the development server
npm run dev

# Open http://localhost:5173 in your browser

数据库设置

# Set up the database schema
psql $DB_CONNECTION_STRING -f scripts/db-setup.sql

# Load scraped documents into the database
npx tsx scripts/load-documents.ts

# Verify data loaded correctly
npx tsx scripts/check-db-stats.ts

# Optimize database performance
psql $DB_CONNECTION_STRING -f scripts/optimize-db.sql

报废(可选)

# Scrape all 3 providers
npm run scrape

# Scrape individual providers
npm run scrape:discovery
npm run scrape:bonitas
npm run scrape:momentum

📁 项目结构

covercheck/
├── src/
│   ├── lib/
│   │   ├── insurance/              # Static insurance data
│   │   │   ├── documents-sa.ts     # SA medical aid documents
│   │   │   └── insurance-*-glossary.ts
│   │   └── server/
│   │       ├── rag.ts              # RAG logic (future)
│   │       └── scrapers/           # Web scraping system
│   │           ├── BaseScraper.ts
│   │           ├── DiscoveryHealthScraper.ts
│   │           ├── BonitasScraper.ts
│   │           ├── MomentumHealthScraper.ts
│   │           └── ScraperOrchestrator.ts
│   └── routes/
│       ├── +page.svelte            # Chat UI (future)
│       └── api/chat/+server.ts     # API endpoint (future)
├── scripts/                         # Utility scripts
│   ├── scrape.ts                   # Main scraping CLI
│   ├── validate-content.ts         # Quality validation
│   └── analyze-scraped-data.ts     # Data analysis
├── docs/                            # Complete documentation
│   ├── README.md                   # Documentation index
│   ├── SCRAPING.md                 # Scraping system guide
│   ├── VERIFIED_URLS.md            # Verified provider URLs
│   └── SCRAPER_FIX_PLAN.md         # Quality improvement process
├── scraped-data/                    # JSON output (gitignored)
├── legacy/                          # Old implementations
└── COVERCHECK_ROADMAP.md           # Development roadmap

📊 数据质量

当前报废结果

提供商 文档 质量率 平均内容
发现运行状况 13/14 93% 10000个字符
动量健康 9/10 90% 10500个字符
博尼塔斯医疗基金 1/2 50% 193754个字符
总计 23/26 88% 约10000个字符

内容覆盖范围

✅ 计划信息

  • 每个供应商的所有主要计划
  • 计划福利和除外责任
  • 保险明细

✅ 福利文件

  • 医院福利
  • 日常福利
  • 慢性病福利

✅ 支持信息

  • 索赔流程
  • 比较工具
  • 联系方式

🛠️ 发展路线图

✅ 第1阶段:数据报废(完成)

  • [x] 研究和验证提供商URL
  • [x] 用Playwright构建抓取系统
  • [x] 实施质量验证
  • [x] 淘汰前三大SA提供商
  • [x] 获得20+份质量文件

✅ 第2阶段:数据库和RAG(完成)

  • [x] 设置PostgreSQL+pgvector
  • [x] 设计数据库模式
  • [x] 处理和组块文档
  • [x] 使用Olama生成嵌入
  • [x] 通过查询扩展实现语义搜索
  • [x] 使用云LLM构建RAG管道
  • [x] 实施流式响应
  • [x] 添加源引用

✅ 第三阶段:公共平台(完成)

  • [x] 具有暗模式的现代SvelteKit UI
  • [x] 提供者选择器组件
  • [x] 增强的引文显示,带有相关性得分
  • [x] 手机/平板电脑的响应式设计
  • [x] CoverCheck品牌和徽标

🔄 第4阶段:部署准备(当前)

  • [x] 生产环境配置
  • [x] 数据库优化和索引
  • [x] 错误处理改进
  • [x] 部署文档
  • []分析跟踪
  • []最终测试和质量保证

📅 第五阶段:生产启动(下)

  • []部署到Vercel+铁路/Supabase
  • []监控性能和错误
  • []收集用户反馈
  • []内容更新自动化

看 CLAUDE.md 和 部署.md 了解详细信息。

📚 文档

所有文件均在 docs/ 目录:

🧪 技术栈

当前:

  • SvelteKit 的 -全栈框架
  • TypeScript -类型安全
  • 剧作家 -网络抓取
  • 再见 -HTML解析

计划:

  • PostgreSQL+pgvector -矢量数据库
  • 奥拉玛 -本地AI模型运行器
  • OpenRouter -云人工智能API(备选)
  • Svelte 5 -反应式UI

🔧 添加新提供商

想添加另一个医疗援助提供者吗?请参阅 添加新刮刀 导游。

快速概述:

  1. 创建一个新的scraper类来扩展 BaseScraper
  2. 定义目标URL和选择器
  3. 注册 ScraperOrchestrator
  4. 测试和验证质量

🤝 贡献

这是一个学习项目,记录了构建生产RAG系统的过程。欢迎投稿、建议和反馈!

📝 许可证

有关详细信息,请参阅LICENSE文件。

🙏 致谢

内置:

数据来源:


由以下材料制成❤️ 为南非人提供简单、准确的医疗援助信息。

当前版本: 第3阶段完成(生产准备就绪) 最后更新时间: 2025-11-20