Ingen beskrivning

liuchengsen e19cb01ef1 refactor: simplify brand card rendering — shared name/desc, separate click behavior 3 veckor sedan
.trae-html-share-packages ebfca0113a fix: 移除前端来源div显示, AI声明换行, SQL空格修复 1 månad sedan
backend-java bde5ec17ef toggle endpoint: support explicit is_active parameter 3 veckor sedan
data-pipeline 594f9aa629 优化图片映射 4 veckor sedan
database 0dec6ee47d 关键词推荐更新 4 veckor sedan
deploy 0632d83fb9 优化日志查询和ip查询 4 veckor sedan
docs 809d2e3d00 brand-recommend-rules toggle endpoint and documentation update 3 veckor sedan
frontend-web a1d3eba586 鉴权调整, 1 månad sedan
miniprogram ce73d348fb 限流优化处理 1 månad sedan
static e19cb01ef1 refactor: simplify brand card rendering — shared name/desc, separate click behavior 3 veckor sedan
tools 44e9d5bc07 部署文档和交接文档提交 1 månad sedan
.env.example 8254d06a29 java的代码调整优化 1 månad sedan
.gitignore 89f8b321c2 数据学习更新 1 månad sedan
README.md 8a485e7d5d init: 中华药典AI助手 - Java Spring Boot + pgvector RAG + Qwen LLM 1 månad sedan
diagnose.py 4b90e6ba85 确认信息的错漏情况 1 månad sedan
diagnose_online.py a1d3eba586 鉴权调整, 1 månad sedan

README.md

中华药典 AI Agent — Pharmacopoeia AI

服务于药店医师、营业员和医生的 AI 药典查询系统

项目结构

pharmacopoeia-ai/
├── backend-java/           # Java Spring Boot 后端(生产推荐)
│   ├── pom.xml
│   └── src/main/java/com/pharmacopoeia/
│       ├── config/          # 配置属性
│       ├── entity/          # JPA 实体
│       ├── security/        # Spring Security + JWT
│       ├── service/         # LLM / RAG / 持久化
│       └── controller/      # REST + SSE 控制器
│
├── backend-python/          # Python FastAPI 后端(开发原型)
│   ├── app/
│   │   ├── api/             # chat / auth / drug / admin / exam
│   │   ├── core/            # config / security / llm_client
│   │   ├── rag/             # retriever / reranker / prompt / intent
│   │   └── models/          # ORM 模型
│   └── requirements.txt
│
├── data-pipeline/           # 数据采集与入库管道(Python)
│   ├── crawlers/            # PDF 提取 / 维基采集 / NMPA 爬虫
│   ├── processors/          # 文本清洗 / 切片 / 向量化
│   ├── schemas/             # JSON Schema(drug / knowledge_point / question)
│   ├── data/                # 药典目录 / 示例数据 / Wiki 采集
│   └── ingest.py            # 向量化入库脚本
│
├── frontend-web/            # HTML5 Web 测试前端
│   └── index.html
│
├── miniprogram/             # 微信小程序 AI 模块(uni-app 增量)
│   ├── api/ai.js            # API 封装(SSE多事件)
│   ├── utils/sse.js         # SSE 工具
│   ├── pages/ai-yaodian/    # AI 药典查询页面
│   └── components/ai-chat/  # 浮动对话面板
│
├── deploy/                  # 部署配置
│   ├── docker-compose.yml   # PG + Redis
│   ├── nginx.conf
│   └── supervisord.conf
│
├── docs/                    # 文档
│   ├── SCHEME.md            # 整体方案设计
│   ├── DATA_GUIDE.md        # 数据准备操作指南
│   ├── CRAWLER_ASSESSMENT.md # 爬虫能力评估
│   └── MINIPROGRAM_INTEGRATION.md # 小程序联调手册
│
├── .env.example             # 环境变量模板
└── .gitignore

快速开始

1. 环境准备

docker compose -f deploy/docker-compose.yml up -d
# 启动 PostgreSQL(pgvector) + Redis

2. Java 后端(推荐)

cd backend-java
# 编辑 src/main/resources/application.yml 填入 qwen.api-key
mvn spring-boot:run

3. Python 后端(原型验证)

cd backend-python
pip install -r requirements.txt
cp ../.env.example ../.env  # 编辑填入 QWEN_API_KEY
uvicorn app.main:app --host 0.0.0.0 --port 8000

4. 导入数据

cd data-pipeline
pip install -r requirements.txt
python ingest.py  # 需要先在 data/ 下准备 drug JSON 文件

5. 前端测试

打开浏览器访问 http://localhost:8000(Python)或 http://localhost:8080(Java)

技术栈

层级 Python版 Java版
后端框架 FastAPI + Uvicorn Spring Boot 3.3
鉴权 python-jose + passlib Spring Security + JJWT
向量检索 pgvector (raw SQL) pgvector (JdbcTemplate)
LLM API OpenAI SDK → Qwen WebFlux → Qwen
ORM SQLAlchemy Spring Data JPA
数据库 PostgreSQL + Redis PostgreSQL + Redis

API 清单

方法 路径 说明
POST /api/v1/chat/stream SSE 流式对话
POST /api/v1/chat/ask 非流式对话
GET /api/v1/chat/history 对话历史
POST /api/v1/auth/login/wechat 微信登录
GET /health 健康检查