Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Use the official Ubuntu base image
FROM pytorch/pytorch:2.6.0-cuda12.6-cudnn9-runtime
FROM pytorch/pytorch:2.6.0-cuda12.6-cudnn9-devel
ENV DEBIAN_FRONTEND=noninteractive
ENV CUDA_DEVICE_ORDER=PCI_BUS_ID
ENV PYTORCH_NVML_BASED_CUDA_CHECK=1
Expand Down
24 changes: 24 additions & 0 deletions api/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# 使用默认 .env,再覆盖 RERANKER_NAME
sh start_rag.sh -e RERANKER_NAME=G:/pretrained_models/mteb/bge-reranker-large-v2


docker run --rm \
--env-file /path/to/.env \
-e RERANKER_NAME=G:/pretrained_models/mteb/bge-reranker-large-v2 \
-p 10000:10000 \
-v /g/Projects/TrustRAG:/app \
-w /app/api/rag \
trustrag:v0.1 \
sh -c "PYTHONPATH=/app python main.py"



docker run --rm \
--gpus all \
-p 10000:10000 \
-v /mnt/g/pretrained_models/mteb/bge-reranker-large:/mnt/g/pretrained_models/mteb/bge-reranker-large \
-v .:/app \
-e RERANKER_NAME=/mnt/g/pretrained_models/mteb/bge-reranker-large \
-w /app/api/rag \
trustrag:v0.1 \
sh -c "PYTHONPATH=/app python main.py"
32 changes: 32 additions & 0 deletions api/rag/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
### API server
API_HOST=0.0.0.0
API_PORT=10000
API_URL=http://127.0.0.1:10001

### Upstream LLM service (gomall)
GOMALL_BASE_URL=http://10.208.61.1:32004/api/v1/1504_gomall_qwen3/Qwen3-30B-A3B-Instruct-2507/
GOMALL_API_KEY=sk-xx

### Local rerank service
RERANK_BASE_URL=
RERANK_API_KEY=

### Model configs
LLM_NAME=Qwen3-30B-A3B-Instruct-2507
LLM_PATH=G:/pretrained_models/llm/glm-4-9b-chat
LLM_SERVICE=online

EMBEDDING_NAME=G:/pretrained_models/mteb/bge-large-zh-v1.5
EMBEDDING_PATH=G:/pretrained_models/mteb/bge-large-zh-v1.5
EMBEDDING_SERVICE=local

RERANKER_NAME=G:/pretrained_models/mteb/bge-reranker-large
RERANKER_PATH=G:/pretrained_models/mteb/bge-reranker-large
RERANKER_SERVICE=local

### Paths
DOCS_PATH=G:/Projects/TrustRAG/data/docs
INDEX_PATH=G:/Projects/TrustRAG/examples/retrievers/dense_cache

### Rewriter tool
REWRITER_API_URL=http://10.208.61.1:32004/api/v1/1504_gomall_qwen3/Qwen3-30B-A3B-Instruct-2507/
14 changes: 3 additions & 11 deletions api/rag/apps/config/__init__.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,3 @@
#!/usr/bin/env python
# -*- coding:utf-8 _*-
"""
@author:quincy qiang
@license: Apache Licence
@file: __init__.py
@time: 2024/06/13
@contact: yanqiangmiffy@gamil.com
@software: PyCharm
@description: coding..
"""
from .base_config import RAGSettings

settings = RAGSettings()
23 changes: 6 additions & 17 deletions api/rag/apps/config/app_config.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,9 @@
#!/usr/bin/env python
# -*- coding:utf-8 _*-
"""
@author:quincy qiang
@license: Apache Licence
@file: app_config.py.py
@time: 2024/06/13
@contact: yanqiangmiffy@gamil.com
@software: PyCharm
@description: coding..
应用基础配置。
"""
import pprint
from typing import ClassVar

pp = pprint.PrettyPrinter(indent=4)


from api.rag.apps.config import settings
class AppConfig:
"""配置类"""
API_V1_STR: str = ""
Expand All @@ -37,13 +26,13 @@ class AppConfig:
{"url": "/v2", "description": "测试地址"},
]

WEB_URL: ClassVar[str] = '*'
WEB_URL: str = '*'
# 接口地址
API_URL: ClassVar[str] = 'http://127.0.0.1:10001'
API_URL: str = settings.api_url
# 运行访问的地址
API_HOST: ClassVar[str] = '0.0.0.0'
API_HOST: str = settings.api_host
# 端口
API_PORT: int = 10000
API_PORT: int = settings.api_port

DEBUGGER: bool = True

Expand Down
40 changes: 40 additions & 0 deletions api/rag/apps/config/base_config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# from pydantic import BaseSettings
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict


class RAGSettings(BaseSettings):
"""Centralized application settings loaded from environment variables."""

# API service
api_host: str = Field(default="0.0.0.0", validation_alias="API_HOST")
api_port: int = Field(default=10000, validation_alias="API_PORT")
api_url: str = Field(default="http://127.0.0.1:10001", validation_alias="API_URL")

# Upstream LLM service (gomall)
gomall_base_url: str = Field(default="http://10.208.61.1:32004/api/v1/1504_gomall_qwen3/Qwen3-30B-A3B-Instruct-2507/", validation_alias="GOMALL_BASE_URL")
gomall_api_key: str = Field(default="", validation_alias="GOMALL_API_KEY")
llm_name: str = Field(default="Qwen3-30B-A3B-Instruct-2507", validation_alias="LLM_NAME")
# Tool specific
rewriter_api_url: str = Field(default="http://10.208.61.1:32004/api/v1/1504_gomall_qwen3/Qwen3-30B-A3B-Instruct-2507/", validation_alias="REWRITER_API_URL")

# Local rerank service
rerank_base_url: str | None = Field(default=None, validation_alias="RERANK_BASE_URL")
rerank_api_key: str | None = Field(default=None, validation_alias="RERANK_API_KEY")


embedding_name: str = Field(default="G:/pretrained_models/mteb/bge-large-zh-v1.5", validation_alias="EMBEDDING_NAME")
embedding_path: str = Field(default="G:/pretrained_models/mteb/bge-large-zh-v1.5", validation_alias="EMBEDDING_PATH")

reranker_name: str = Field(default="G:/pretrained_models/mteb/bge-reranker-large", validation_alias="RERANKER_NAME")
reranker_path: str = Field(default="G:/pretrained_models/mteb/bge-reranker-large", validation_alias="RERANKER_PATH")
# Paths
docs_path: str = Field(default="G:/Projects/TrustRAG/data/docs", validation_alias="DOCS_PATH")
index_path: str = Field(default="G:/Projects/TrustRAG/examples/retrievers/dense_cache", validation_alias="INDEX_PATH")

model_config = SettingsConfigDict(
env_file=".env",
env_file_encoding="utf-8",
case_sensitive=False,
extra="ignore",
)
18 changes: 6 additions & 12 deletions api/rag/apps/config/rerank_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,11 @@
@software: PyCharm
@description: coding..
"""
from trustrag.config.config_loader import config
from api.rag.apps.config import settings

class RerankConfig():
class RerankConfig:
"""重排序配置类"""
# 从配置文件加载服务和模型配置
_rerank_service = config.get_config('services.rerank')
_rerank_model = config.get_config('models.reranker')

# 模型名称
model_name_or_path:str = _rerank_model['name']
# 服务 URL
base_url:str = _rerank_service['base_url']
# API 密钥
api_key:str = _rerank_service['api_key']

model_name_or_path: str = settings.reranker_name
base_url: str | None = settings.rerank_base_url
api_key: str | None = settings.rerank_api_key
16 changes: 6 additions & 10 deletions api/rag/apps/core/judge/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,30 +11,26 @@
"""
import loguru
from fastapi import APIRouter
from trustrag.config.config_loader import config

from api.rag.apps.config import settings
from api.rag.apps.core.judge.bodys import JudgeBody
from api.rag.apps.handle.response.json_response import ApiResponse
from trustrag.modules.judger.bge_judger import BgeJudger, BgeJudgerConfig
from trustrag.modules.judger.chatgpt_judger import OpenaiJudger, OpenaiJudgerConfig

judge_router = APIRouter()

# 加载服务和模型配置
llm_service = config.get_config('services.dmx')
llm_model = config.get_config('models.llm')
rerank_model = config.get_config('models.reranker')

# BGE 判断器配置
judge_config = BgeJudgerConfig(
model_name_or_path=rerank_model['name']
model_name_or_path=settings.reranker_name,
)
bge_judger = BgeJudger(judge_config)

# LLM 判断器配置
judger_config = OpenaiJudgerConfig(
base_url=llm_service['base_url'],
api_key=llm_service['api_key'],
model_name=llm_model['name']
base_url=settings.gomall_base_url,
api_key=settings.gomall_api_key,
model_name=settings.llm_name,
)
openai_judger = OpenaiJudger(judger_config)

Expand Down
15 changes: 4 additions & 11 deletions api/rag/apps/core/rerank/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,18 @@
import loguru
from fastapi import APIRouter

from api.rag.apps.config import settings
from api.rag.apps.core.rerank.bodys import RerankBody
from api.rag.apps.core.rerank.models import Application
from api.rag.apps.handle.response.json_response import UserNotFoundResponse, ApiResponse
from trustrag.modules.reranker.bge_reranker import BgeReranker, BgeRerankerConfig
from trustrag.config.config_loader import config

# from apps.handle.exception.exception import MallException
# from apps.core.config.models import LLMModel
# from tortoise.contrib.pydantic import pydantic_model_creator

rerank_router = APIRouter()
# 从配置文件加载重排序配置
rerank_service = config.get_config('services.rerank')
rerank_model = config.get_config('models.reranker')

reranker_config = BgeRerankerConfig(
model_name_or_path=rerank_model['name'],
api_key=rerank_service['api_key'],
url=rerank_service['base_url']
model_name_or_path=settings.reranker_name,
api_key=settings.rerank_api_key,
url=settings.rerank_base_url,
)
bge_reranker = BgeReranker(reranker_config)
# Create
Expand Down
7 changes: 5 additions & 2 deletions api/rag/apps/core/rewrite/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,18 @@
import loguru
from fastapi import APIRouter

from api.rag.apps.config import settings
from api.rag.apps.core.rewrite.bodys import RewriteBody
from api.rag.apps.handle.response.json_response import ApiResponse
from trustrag.modules.rewriter.openai_rewrite import OpenaiRewriter,OpenaiRewriterConfig
from trustrag.modules.rewriter.openai_rewrite import OpenaiRewriter, OpenaiRewriterConfig


rewriter_router = APIRouter()

rewriter_config = OpenaiRewriterConfig(
api_url="http://10.208.63.29:8888"
base_url=settings.rewriter_api_url,
api_key=settings.gomall_api_key,
model_name=settings.llm_name,
)
openai_rewriter = OpenaiRewriter(rewriter_config)

Expand Down
13 changes: 13 additions & 0 deletions api/rag/citation.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"question": "请介绍下巨齿鲨2电影",
"response": "巨齿鲨2是一部科幻冒险电影,由本·维特利执导,杰森·斯坦森、吴京、蔡书雅和克利夫·柯蒂斯主演。电影讲述了海洋霸主巨齿鲨,今夏再掀狂澜!乔纳斯·泰勒(杰森·斯坦森饰)与科学家张九溟(吴京饰)双雄联手,进入海底7000米深渊执行探索任务。他们意外遭遇史前巨兽海洋霸主巨齿鲨群的攻击,还将对战凶猛危险的远古怪兽群。惊心动魄的深渊冒险,巨燃巨爽的深海大战一触即发。",
"evidences": [
"海洋霸主巨齿鲨,今夏再掀狂澜!乔纳斯·泰勒(杰森·斯坦森 饰)与科学家张九溟(吴京 饰)双雄联手,进入海底7000米深渊执行探索任务。他们意外遭遇史前巨兽海洋霸主巨齿鲨群的攻击,还将对战凶猛危险的远古怪兽群。惊心动魄的深渊冒险,巨燃巨爽的深海大战一触即发",
"本·维特利 编剧:乔·霍贝尔埃里希·霍贝尔迪恩·乔格瑞斯 国家地区:中国 | 美国 发行公司:上海华人影业有限公司五洲电影发行有限公司中国电影股份有限公司北京电影发行分公司 出品公司:上海华人影业有限公司华纳兄弟影片公司北京登峰国际文化传播有限公司 更多片名:巨齿鲨2 剧情:海洋霸主巨齿鲨,今夏再掀狂澜!乔纳斯·泰勒(杰森·斯坦森 饰)与科学家张九溟(吴京 饰)双雄联手,进入海底7000米深渊执行探索任务。他们意外遭遇史前巨兽海洋霸主巨齿鲨群的攻击,还将对战凶猛危险的远古怪兽群。惊心动魄的深渊冒险,巨燃巨爽的深海大战一触即发……"
],
"selected_idx": [
1,
2
],
"selected_docs": []
}
15 changes: 15 additions & 0 deletions api/rag/citation_res.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"question": "请介绍下巨齿鲨2电影",
"response": "巨齿鲨2是一部科幻冒险电影,由本·维特利执导,杰森·斯坦森、吴京、蔡书雅和克利夫·柯蒂斯主演。电影讲述了海洋霸主巨齿鲨,今夏再掀狂澜!乔纳斯·泰勒(杰森·斯坦森饰)与科学家张九溟(吴京饰)双雄联手,进入海底7000米深渊执行探索任务。他们意外遭遇史前巨兽海洋霸主巨齿鲨群的攻击,还将对战凶猛危险的远古怪兽群。惊心动魄的深渊冒险,巨燃巨爽的深海大战一触即发。",
"evidences": [
"海洋霸主巨齿鲨,今夏再掀狂澜!乔纳斯·泰勒(杰森·斯坦森 饰)与科学家张九溟(吴京 饰)双雄联手,进入海底7000米深渊执行探索任务。他们意外遭遇史前巨兽海洋霸主巨齿鲨群的攻击,还将对战凶猛危险的远古怪兽群。惊心动魄的深渊冒险,巨燃巨爽的深海大战一触即发",
"本·维特利 编剧:乔·霍贝尔埃里希·霍贝尔迪恩·乔格瑞斯 国家地区:中国 | 美国 发行公司:上海华人影业有限公司五洲电影发行有限公司中国电影股份有限公司北京电影发行分公司 出品公司:上海华人影业有限公司华纳兄弟影片公司北京登峰国际文化传播有限公司 更多片名:巨齿鲨2 剧情:海洋霸主巨齿鲨,今夏再掀狂澜!乔纳斯·泰勒(杰森·斯坦森 饰)与科学家张九溟(吴京 饰)双雄联手,进入海底7000米深渊执行探索任务。他们意外遭遇史前巨兽海洋霸主巨齿鲨群的攻击,还将对战凶猛危险的远古怪兽群。惊心动魄的深渊冒险,巨燃巨爽的深海大战一触即发……"
],
"selected_idx": [
1,
2
],
"selected_docs": [],
"result": "",
"quote_list": []
}
7 changes: 3 additions & 4 deletions api/rag/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,10 @@
"""
import os
import sys

from dotenv import load_dotenv
load_dotenv()
os.environ["TOKENIZERS_PARALLELISM"] = "false"
sys.path.append('.')
# sys.path.append('/data/users/searchgpt/yq/GoMate')
sys.path.append('/data/users/searchgpt/yq/GoMate_dev')
sys.path.append('../../')
sys.path.append('/home/yanqiang/code')

from apps.app import create_app
Expand Down
Loading
Loading