|
|
4 mesi fa | |
|---|---|---|
| .. | ||
| README.md | 4 mesi fa | |
| design.md | 4 mesi fa | |
Ragflow_plugs是一个基于RAG(检索增强生成)技术的多模态混合检索系统,支持文本和图像的联合检索,并提供灵活的HTTP API服务。该系统旨在为智能应用提供高效、准确的多模态信息检索能力。
├── agent/ # 智能代理模块
├── api/ # HTTP API服务模块
├── book/ # 示例文档和输出目录
├── conf/ # 配置文件
├── doc/ # 项目文档
├── model/ # 模型相关模块
├── parser/ # 文档解析模块
├── test/ # 测试文件
├── utils/ # 工具模块
├── workflow/ # 工作流管理模块
├── .env # 环境变量配置
├── .env.example # 环境变量示例
├── requirements.txt # 项目依赖
└── __init__.py # 项目初始化
安装依赖:
pip install -r requirements.txt
配置环境变量:
cp .env.example .env
# 编辑.env文件,配置API密钥和其他参数
python -m api.hybrid_search_http
服务将在 http://0.0.0.0:18001 上运行。
请求URL:/hybrid_search
请求方法:POST
请求体:
{
"text_query": "文本查询",
"image": "图片URL或base64编码",
"topn": 2
}
响应示例:
{
"success": true,
"message": "混合检索成功",
"output": [
{
"file_name": "文件名",
"page_number": 1,
"content": "内容",
"image_path": "图片路径",
"dataset_id": "数据集ID",
"document_id": "文档ID",
"_similarity": 0.95
}
],
"total": 1
}
请求URL:/health
请求方法:GET
响应示例:
{
"status": "ok",
"message": "混合检索HTTP服务正常运行"
}
| 配置项 | 说明 | 默认值 |
|---|---|---|
| MULTIMODAL_EMBEDDING_MODEL_NAME | 多模态嵌入模型名称 | qwen-vl-plus |
| DASHSCOPE_API_KEY | DashScope API密钥 | - |
| SILICONFLOW_API_KEY | SiliconFlow API密钥 | - |
| 配置项 | 说明 | 默认值 |
|---|---|---|
| INFINITY_HOST | Infinity数据库地址 | http://localhost:23820 |
| INFINITY_DATABASE | Infinity数据库名称 | image_db |
| INFINITY_TABLE_NAME | Infinity表名称 | - |
运行单元测试:
python -m pytest test/ -v
运行特定测试:
python -m pytest test/test_http_hybrid_search.py -v
from utils.infinity_util import InfinityVectorDB
from model.multimodal_embedding import Embedding
from conf.config import ModelConfig
# 初始化向量数据库
vector_db = InfinityVectorDB()
# 初始化嵌入模型
embedding_model = Embedding(
model_name=ModelConfig.get_multimodal_embedding_model_name(),
api_key=ModelConfig.get_dashscope_api_key()
)
# 生成多模态嵌入
text_query = "文本查询"
image = Image.open("image.jpg")
embedding = embedding_model.get_multimodal_embedding(text_query, image)
# 执行混合检索
result = vector_db.hybrid_search(
index_name="index_name",
match_method="dense",
vector_field="vector_field",
query_vector=embedding,
element_type="float",
metric_type="cosine",
topn=2,
text_query=text_query,
text_field="content"
)
print(result)
如有问题或建议,请联系项目负责人。
本项目采用MIT许可证。