Sign inSign up

kangkang223/embed_rerank_api

By kangkang223

•Updated over 2 years ago

基于fastapi封装的embedding和reranking模型接口

Image
Machine learning & AI
0

936

kangkang223/embed_rerank_api repository overview

⁠启动服务

# 提前下载好对应的模型
❯ ls -al /Users/kangkang/app/models
total 3863352
drwxr-xr-x   9 kangkang  staff         288  6  2 17:28 .
drwxr-xr-x   7 kangkang  staff         224 11 10  2023 ..
-rw-r--r--@  1 kangkang  staff        8196  6  2 17:28 .DS_Store
drwxr-xr-x   8 kangkang  staff         256  3  7 16:28 BAAI--bge-reranker-base
drwxr-xr-x  15 kangkang  staff         480  6  2 17:28 bge-large-zh-v1.5
drwxr-xr-x  10 kangkang  staff         320  6  2 17:28 bge-reranker-base
-rw-r--r--   1 kangkang  staff  1978017993  3  5 10:50 models--BAAI--bge-reranker-base.zip
drwxr-xr-x   7 kangkang  staff         224  3  5 10:50 models--moka-ai--m3e-base
-rw-r--r--@  1 kangkang  staff           1  2 26 18:27 version.txt

# 启动容器(CPU运行)
docker run -d -p 8080:8080 --name embed_rerank_api \
-v /Users/kangkang/app/data/models:/app/src/data/models \
-v /Users/kangkang/app/data/logs:/app/src/data/logs \
kangkang223/embed_rerank_api

# 启动容器(GPU运行)
docker run -d -p 8080:8080 --name embed_rerank_api \
-v /Users/kangkang/app/data/models:/app/src/data/models \
-v /Users/kangkang/app/data/logs:/app/src/data/logs \
--gpus all \
kangkang223/embed_rerank_api

⁠使用案例

⁠embedding
  • 参数说明

    • texts: list, 输入文本列表
    • modelName: str, 模型名称
    • device: str, 设备类型: cpu/cuda
    • useCache: bool, 是否缓存(模型常驻内存,速度更快)
  • 请求示例

curl -X POST -H "Content-Type: application/json" \
-d '{
    "texts": [
        "你好",
        "今天天气不错啊"
    ],
    "modelName": "bge-large-zh-v1.5",
    "device": "cpu",
    "useCache": true
}' http://127.0.0.1:8080/api/embedding
  • 结果示例
{
  "rspCode": "0000",
  "rspDesc": "success",
  "rows": [
    [
      0.1,
      0.1,
      ...
    ],
    [
      0.1,
      0.01,
      ...
    ]
  ]
}
⁠reranking
  • 参数说明

    • query: str, 查询文本
    • texts: list, 对象列表(必须有content字段,如果有其他字段,会在结果里自动返回)
    • modelName: str, 模型名称
    • device: str, 设备类型: cpu/cuda
    • useCache: bool, 是否缓存(模型常驻内存,速度更快)
  • 请求示例

curl -X POST -H "Content-Type: application/json" \
-d '{
  "query": "介绍一下大熊猫",
  "texts": [
    {"content":"大熊猫比较喜欢吃竹子","title":"附加字段"},{"content":"大熊猫是中国特有动物","title":"附加字段"}
  ],
  "modelName": "bge-reranker-base",
  "device": "cpu",
  "useCache": true
}' http://127.0.0.1:8080/api/reranking
  • 结果示例
{
  "rspCode": "0000",
  "rspDesc": "success",
  "rows": [
    {
      "content": "大熊猫是中国特有动物",
      "title": "附加字段",
      "score": 3.13826847076416
    },
    {
      "content": "大熊猫比较喜欢吃竹子",
      "title": "附加字段",
      "score": -1.2197096347808838
    }
  ]
}
⁠模型缓存

模型缓存之后,第一次请求耗时较长,后续请求耗时较短

2024-06-02 21:00:45,726 |-INFO src.common_util [82] -| embedding start: device=cuda, model_name=/app/src/data/models/bge-large-zh-v1.5, texts=1
2024-06-02 21:00:48,258 |-INFO src.common_util [22] -| embedding caching model: bge-large-zh-v1.5
2024-06-02 21:00:49,052 |-INFO src.common_util [86] -| embedding end: device=cuda, time=3.33
2024-06-02 21:00:49,053 |-INFO src.controller [86] -| 文本向量化-耗时:texts=['你好'] modelName='bge-large-zh-v1.5' device='cuda' useCache=True|3.33 s
INFO:     192.161.6.251:58896 - "POST /api/embedding HTTP/1.1" 200 OK
2024-06-02 21:00:55,934 |-INFO src.common_util [82] -| embedding start: device=cuda, model_name=/app/src/data/models/bge-large-zh-v1.5, texts=1
2024-06-02 21:00:55,969 |-INFO src.common_util [86] -| embedding end: device=cuda, time=0.03
INFO:     192.161.6.251:58904 - "POST /api/embedding HTTP/1.1" 200 OK

⁠提高并发

模型缓存之后推理是单实例的,建议部署多个实例,使用nginx负载

Tag summary

Content type

Image

Digest

sha256:cacc2e322…

Size

3.2 GB

Last updated

over 2 years ago

docker pull kangkang223/embed_rerank_api