adaptive_rag / run_graphrag.py
lanny xu
add Milvus db
f131a12
#!/usr/bin/env python3
"""
知识图谱检索启动脚本
负责配置环境并运行 main_graphrag.py
使用方法:
python run_graphrag.py
"""
import os
import sys
import subprocess
print("="*60)
print("🚀 启动知识图谱检索 (GraphRAG)")
print("="*60)
# ============================================================
# 1. 配置环境
# ============================================================
def setup_environment():
"""配置环境变量"""
print("\n⚙️ 步骤 1/2: 配置环境变量...")
# 检查.env文件
if os.path.exists(".env"):
print(" ✅ 发现 .env 文件,加载配置...")
try:
from dotenv import load_dotenv
load_dotenv()
print(" ✅ 环境变量已加载")
except ImportError:
print(" ⚠️ python-dotenv 未安装,跳过 .env 加载")
else:
print(" ℹ️ 未找到 .env 文件")
# 显示环境变量状态
print("\n 📋 环境变量状态:")
print(f" • TAVILY_API_KEY: {'✅ 已设置' if os.environ.get('TAVILY_API_KEY') else '⚠️ 未设置'}")
print(f" • NOMIC_API_KEY: {'✅ 已设置' if os.environ.get('NOMIC_API_KEY') else '⚠️ 未设置'}")
# 添加当前目录到 Python 路径
current_dir = os.getcwd()
if current_dir not in sys.path:
sys.path.insert(0, current_dir)
print(f"\n ✅ 已添加到 Python 路径: {current_dir}")
print("\n 💡 注意: 新增的多模态功能需要Pillow库,请确保已安装")
# ============================================================
# 2. 运行 main_graphrag.py
# ============================================================
def run_main_graphrag():
"""运行 main_graphrag.py"""
print("\n🚀 步骤 2/2: 运行 main_graphrag.py...")
print("="*60)
# 检查文件是否存在
if not os.path.exists("main_graphrag.py"):
print("\n❌ 错误: 未找到 main_graphrag.py 文件")
print(" 请确保在正确的目录中运行此脚本")
return False
print("\n🔄 启动 GraphRAG...\n")
try:
# 运行 main.py
result = subprocess.run(
[sys.executable, "main_graphrag.py"],
capture_output=False, # 实时显示输出
)
if result.returncode == 0:
print("\n" + "="*60)
print("✅ 运行成功!")
print("="*60)
return True
else:
print("\n" + "="*60)
print(f"❌ 运行失败 (返回码: {result.returncode})")
print("="*60)
return False
except KeyboardInterrupt:
print("\n\n⚠️ 用户中断执行")
return False
except Exception as e:
print(f"\n❌ 运行时错误: {e}")
return False
# ============================================================
# 主函数
# ============================================================
def main():
"""主执行流程"""
try:
# 1. 配置环境
setup_environment()
# 2. 运行 main_graphrag.py
success = run_main_graphrag()
if success:
print("\n💡 提示: 生成的知识图谱保存在配置的路径中")
except KeyboardInterrupt:
print("\n\n⚠️ 用户中断执行")
except Exception as e:
print(f"\n❌ 执行过程中出错: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
main()