基于LangChain构建的图片检索增强生成系统,能够将图片描述向量化,并在回答问题时调用相关图片。
图片数据集 (JSONL)
↓
数据预处理
↓
向量化 (HuggingFace Embeddings)
↓
向量数据库 (ChromaDB)
↓
检索器 (Similarity Search)
↓
问答链 (LLM + RAG)
↓
回答 + 相关图片
# 自动安装脚本 (Linux/macOS)
./install.sh
# 或Windows
install.bat
# 或手动安装
conda env create -f environment.yml
conda activate image-rag-system
pip install -r requirements.txt
export OPENAI_API_KEY="your-openai-api-key"
export SILICONFLOW_API_KEY="your-siliconflow-api-key"
# 激活conda环境
conda activate image-rag-system
# 或使用激活脚本
./activate_env.sh # Linux/macOS
activate_env.bat # Windows
# 启动统一主程序
python main.py
# 或使用启动脚本
python start.py
主程序提供以下功能:
from image_rag_system import ImageRAGSystem
# 创建RAG系统
rag_system = ImageRAGSystem(
data_path="path/to/your/data.jsonl",
vector_db_path="./vector_db"
)
# 初始化系统
rag_system.setup()
# 查询
result = rag_system.query("什么是中性粒细胞?")
print(result['answer'])
print(f"相关图片: {len(result['related_images'])} 张")
python simple_example.py
python image_rag_system.py
# 使用SiliconFlow API
python siliconflow_example.py
# 使用SiliconFlow (需要设置API密钥)
python run_siliconflow.py
系统支持JSONL格式的图片数据,每条记录包含:
{
"image_url": "图片URL",
"scene_description": "场景描述",
"characters_in_frame": [
{
"character_name": "角色名称",
"biological_entity": "生物学实体",
"confidence": "置信度"
}
],
"biological_processes_or_concepts": [
{
"name": "生物学概念名称",
"explanation": "详细解释",
"scene_relevance": "场景相关性"
}
],
"keywords": ["关键词1", "关键词2"],
"quality_assessment": {
"technical_quality_score": 0.95
},
"content_assessment": {
"suitability_score": 1.0
}
}
sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 (默认,支持中英文)sentence-transformers/all-MiniLM-L6-v2 (英文优化)BAAI/bge-large-zh-v1.5 (中文大模型,推荐)BAAI/bge-base-zh-v1.5 (中文基础模型)BAAI/bge-large-en-v1.5 (英文大模型)text-embedding-ada-002 (OpenAI兼容)gpt-3.5-turbo (默认)gpt-4k: 检索返回的文档数量 (默认: 5)search_type: 检索类型 ("similarity", "mmr", "similarity_score_threshold")data_path: JSONL数据文件路径vector_db_path: 向量数据库存储路径embedding_model: 嵌入模型名称llm_model: 大语言模型名称setup(force_recreate=False): 初始化整个RAG系统query(question): 查询系统并返回回答和相关图片get_similar_images(query, k=5): 获取相似图片load_data(): 加载数据文件create_documents(): 创建文档对象OPENAI_API_KEY 环境变量系统使用Python logging模块,可以通过以下方式启用详细日志:
import logging
logging.basicConfig(level=logging.DEBUG)
系统设计为可扩展的,可以轻松添加:
系统已集成SiliconFlow嵌入API,提供以下优势:
from image_rag_system import ImageRAGSystem
# 使用SiliconFlow API
rag_system = ImageRAGSystem(
data_path="path/to/data.jsonl",
use_siliconflow=True,
siliconflow_api_key="your-api-key",
siliconflow_model="BAAI/bge-large-zh-v1.5"
)
rag_system.setup()
result = rag_system.query("什么是中性粒细胞?")
MIT License