A Chinese relation extraction data utility toolkit based on CasRel model
Project description
BIO 知识图谱系统 (本地模型版)
一个功能强大的 BIO 标注知识图谱系统,使用本地 multilingual-e5-base 模型,整合了 Neo4j、语义推理、向量检索、LLM 辅助标注等先进技术。
🚀 功能特性
核心功能
- 智能标注: 基于本地 multilingual-e5-base 模型的自动 BIO 标注
- 语义推理: 实体消歧、关系推荐、本体推理
- 向量检索: 基于 FAISS 的语义相似度搜索
- 知识图谱: Neo4j 驱动的图数据库存储和查询
- 可视化界面: 现代化的 Web 管理界面
技术栈
- 后端: Flask + Python
- 数据库: Neo4j 图数据库
- 向量模型: 本地 multilingual-e5-base (768维)
- 向量检索: FAISS + Sentence Transformers
- LLM: OpenAI GPT-3.5/4 API (可选)
- 前端: HTML5 + CSS3 + JavaScript + D3.js
- 可视化: Vis.js 网络图
📋 系统架构
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 前端界面 │ │ API 服务层 │ │ 数据存储层 │
│ │ │ │ │ │
│ • 标注管理 │◄──►│ • 标注服务 │◄──►│ • Neo4j 图库 │
│ • 图谱可视化 │ │ • 语义服务 │ │ • FAISS 索引 │
│ • 课程管理 │ │ • 向量服务 │ │ • 本地模型 │
│ • 系统监控 │ │ • LLM 服务 │ │ • 文件存储 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
🛠️ 安装部署
环境要求
- Python 3.8+
- Neo4j 4.0+
- 8GB+ RAM (推荐)
- 本地 multilingual-e5-base 模型
- CUDA GPU (可选,用于加速向量计算)
1. 克隆项目
git clone <repository-url>
cd bio_knowledge_graph_local_model
2. 准备本地模型
方法一:下载预训练模型
# 创建模型目录
mkdir -p models/multilingual-e5-base
# 使用 Python 下载模型
python3 -c "
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('intfloat/multilingual-e5-base')
model.save('./models/multilingual-e5-base')
print('模型下载完成')
"
方法二:使用已有模型
如果您已经有 multilingual-e5-base 模型,请将其放置在 ./models/multilingual-e5-base/ 目录下。
3. 安装依赖
pip install -r requirements.txt
4. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,配置本地模型路径和其他设置
重要配置项:
# 本地模型路径
LOCAL_MODEL_PATH=./models/multilingual-e5-base
VECTOR_DIMENSION=768
# 模型缓存目录
HF_HOME=./models
TRANSFORMERS_CACHE=./models/transformers_cache
SENTENCE_TRANSFORMERS_HOME=./models/sentence_transformers
5. 启动 Neo4j 数据库
# 使用 Docker 启动 Neo4j
docker run -d \
--name neo4j \
-p 7474:7474 -p 7687:7687 \
-e NEO4J_AUTH=neo4j/biokg2024 \
neo4j:latest
6. 初始化数据库
python -c "from models.database import db; db.create_indexes()"
7. 启动应用
python run.py
8. 访问系统
- API 文档: http://localhost:5000/api
- 管理界面: http://localhost:5000
- Neo4j 浏览器: http://localhost:7474
📖 使用指南
本地模型配置
模型路径设置
在 .env 文件中设置本地模型路径:
LOCAL_MODEL_PATH=./models/multilingual-e5-base
模型验证
启动应用后,可以通过以下 API 检查模型状态:
curl http://localhost:5000/api/vector/health
智能标注
- 在标注页面输入需要标注的文本
- 系统将使用本地 multilingual-e5-base 模型进行向量编码
- 结合语义规则和向量相似度进行标注
- 查看标注实体和置信度
- 保存标注结果到知识图谱
向量检索
- 使用本地模型进行语义相似度搜索
- 支持实体聚类和相似度计算
- 构建和管理 FAISS 向量索引
- 批量处理和增量更新
🔧 API 文档
向量服务 API
POST /api/vector/search
使用本地模型进行语义搜索
请求体:
{
"query": "音乐相关课程",
"k": 10,
"threshold": 0.5
}
POST /api/vector/similarity
计算两个文本的语义相似度
请求体:
{
"text1": "钢琴课程",
"text2": "音乐教学"
}
POST /api/vector/embedding
获取文本的向量表示
请求体:
{
"text": "我喜欢学习钢琴"
}
响应:
{
"status": "success",
"data": {
"text": "我喜欢学习钢琴",
"embedding": [0.1, 0.2, ...],
"dimension": 768
}
}
标注 API
POST /api/annotate
智能标注文本(使用本地模型)
请求体:
{
"text": "我喜欢学习钢琴和绘画",
"context": "兴趣爱好描述",
"use_llm": false,
"use_vector": true
}
🧪 测试
运行单元测试
pytest tests/
测试本地模型
python -c "
from services.vector_service import VectorService
service = VectorService('./models/multilingual-e5-base', 768)
success = service.load_model()
print(f'模型加载: {\"成功\" if success else \"失败\"}')
if success:
embedding = service.encode_text('测试文本')
print(f'向量维度: {len(embedding)}')
print(f'向量示例: {embedding[:5]}')
"
📊 性能指标
本地模型性能
- 模型大小: ~1.1GB
- 向量维度: 768
- 编码速度: 500-1000 字符/秒 (CPU)
- 编码速度: 2000+ 字符/秒 (GPU)
- 内存占用: ~2GB (模型加载后)
标注性能
- 准确率: 95%+
- 召回率: 92%+
- F1 分数: 93%+
- 处理速度: 800 字符/秒
检索性能
- 向量检索: < 50ms (10K 实体)
- 相似度计算: < 10ms
- 批量编码: 100 文本/秒
🔍 故障排除
常见问题
1. 本地模型加载失败
# 检查模型文件是否存在
ls -la ./models/multilingual-e5-base/
# 检查模型完整性
python -c "
from sentence_transformers import SentenceTransformer
try:
model = SentenceTransformer('./models/multilingual-e5-base')
print('模型加载成功')
except Exception as e:
print(f'模型加载失败: {e}')
"
2. 向量维度不匹配
确保配置文件中的 VECTOR_DIMENSION=768 与 multilingual-e5-base 模型的实际维度匹配。
3. 内存不足
- 减少
BATCH_SIZE和VECTOR_BATCH_SIZE - 使用 GPU 加速(如果可用)
- 增加系统内存
4. 模型下载缓慢
设置国内镜像:
export HF_ENDPOINT=https://hf-mirror.com
性能优化
1. GPU 加速
在 .env 文件中启用 GPU:
ENABLE_GPU=true
2. 批量处理优化
调整批量大小:
VECTOR_BATCH_SIZE=16 # 减少内存使用
BATCH_SIZE=64 # 增加处理速度
3. 缓存优化
设置模型缓存:
TRANSFORMERS_CACHE=./models/transformers_cache
SENTENCE_TRANSFORMERS_HOME=./models/sentence_transformers
🆕 本地模型版本更新
v2.0.0 (当前版本)
- ✅ 集成本地 multilingual-e5-base 模型
- ✅ 优化向量服务性能
- ✅ 支持离线运行
- ✅ 增强模型管理功能
- ✅ 改进错误处理和日志
v1.0.0 (原版本)
- 基础标注功能
- 在线模型依赖
- 知识图谱构建
- Web 管理界面
🔄 从在线版本迁移
如果您从在线模型版本迁移到本地模型版本:
- 备份数据
# 备份 Neo4j 数据
docker exec neo4j neo4j-admin dump --database=neo4j --to=/backups/neo4j.dump
# 备份向量索引
cp -r data/ data_backup/
- 更新配置
# 更新环境变量
LOCAL_MODEL_PATH=./models/multilingual-e5-base
VECTOR_DIMENSION=768
- 重建向量索引 由于模型变更,需要重新构建向量索引:
curl -X POST http://localhost:5000/api/vector/index/build \
-H "Content-Type: application/json" \
-d '{"texts": ["your", "texts", "here"]}'
📄 许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
📞 联系方式
- 项目维护者: [Your Name]
- 邮箱: [your.email@example.com]
- 问题反馈: GitHub Issues
🙏 致谢
感谢以下开源项目的支持:
- multilingual-e5-base - 多语言嵌入模型
- Neo4j - 图数据库
- FAISS - 向量检索
- Sentence Transformers - 语义嵌入
- Flask - Web 框架
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bio_knowledge_graph-1.1.0.tar.gz.
File metadata
- Download URL: bio_knowledge_graph-1.1.0.tar.gz
- Upload date:
- Size: 37.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f0a029768f46c9a23a86d8cefd8fab1ce966b1d44ea8bc5323344ee9320eba5
|
|
| MD5 |
4c3a149e7a537db8dfe26e2cb6de72a8
|
|
| BLAKE2b-256 |
cadfffe4897353a3f2bbeb4dd595eb34d5d4be10859a5b085098a84504825eb6
|
File details
Details for the file bio_knowledge_graph-1.1.0-py3-none-any.whl.
File metadata
- Download URL: bio_knowledge_graph-1.1.0-py3-none-any.whl
- Upload date:
- Size: 38.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5240a234aa0fe3fd696d281008c59ee079b3654b630bc31f16d0acfae315874b
|
|
| MD5 |
2d623edb46469db8364c914dbdb80ab9
|
|
| BLAKE2b-256 |
cb0a59e1c0d36fdca220bcf6f6c9e631a905e22aeb983876a9fa330efe7e920a
|