Closed xy3xy3 closed 2 months ago
感觉有点贵。重排一次,基本 50*512 token 以上,相当于 25.6k tokens=0.05 元。 而对应 llm,一般也就花费 0.1 元(3.5 水平的模型)。 0.0002 元/1k token 还差不多。
感觉有点贵。重排一次,基本 50*512 token 以上,相当于 25.6k tokens=0.05 元。 而对应 llm,一般也就花费 0.1 元(3.5 水平的模型)。 0.0002 元/1k token 还差不多。
确实,现在重排模型好像都很贵,刚刚看了一家中转的,价格比百度贵
抽空测试下效果
例行检查
- [x ] 我已确认目前没有类似 features
- [ x] 我已确认我已升级到最新版本
- [x ] 我已完整查看过项目 README,已确定现有版本无法满足需求
- [x ] 我理解并愿意跟进此 features,协助测试和提供反馈
- [x] 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 features 可能会被无视或直接关闭
功能描述
一个价格还可以的在线API
应用场景
混合搜索重排
相关示例
代码已经实现
开通服务
在平台搜索bce-reranker开通,价格 ¥0.002元/千tokens
获取AK,SK
百度智能云-管理中心 (baidu.com) 创建 Access Key ,复制它和Secret Key
本地挂脚本
脚本如下,注意替换自己的AK,SK
#!/usr/bin/env python # -*- coding: utf-8 -*- import os import uvicorn from fastapi import FastAPI, Security, HTTPException from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials from pydantic import BaseModel from typing import Optional, List import qianfan from qianfan.resources import Reranker app = FastAPI() security = HTTPBearer() env_bearer_token = 'sk-xxx' class QADocs(BaseModel): query: Optional[str] documents: Optional[List[str]] class Singleton(type): def __call__(cls, *args, **kwargs): if not hasattr(cls, '_instance'): cls._instance = super().__call__(*args, **kwargs) return cls._instance class ReRanker(metaclass=Singleton): def __init__(self): os.environ["QIANFAN_ACCESS_KEY"] = "你的AK" os.environ["QIANFAN_SECRET_KEY"] = "你的SK" self.reranker = Reranker(model="bce-reranker-base_v1") def compute_score(self, query: str, documents: List[str]): if len(documents) > 0: result = self.reranker.do(query, documents) return result.body['results'] else: return None class Chat(object): def __init__(self): self.reranker = ReRanker() def fit_query_answer_rerank(self, query_docs: QADocs) -> List: if query_docs is None or len(query_docs.documents) == 0: return [] scores = self.reranker.compute_score(query_docs.query, query_docs.documents) new_docs = [] for index, score in enumerate(scores): new_docs.append({"index": score['index'], "text": query_docs.documents[score['index']], "score": score['relevance_score']}) results = [{"index": documents["index"], "relevance_score": documents["score"]} for documents in list(sorted(new_docs, key=lambda x: x["score"], reverse=True))] return results @app.post('/v1/rerank') async def handle_post_request(docs: QADocs, credentials: HTTPAuthorizationCredentials = Security(security)): token = credentials.credentials if env_bearer_token is not None and token != env_bearer_token: raise HTTPException(status_code=401, detail="Invalid token") chat = Chat() try: results = chat.fit_query_answer_rerank(docs) return {"results": results} except Exception as e: print(f"报错:\n{e}") return {"error": "重排出错"} if __name__ == "__main__": token = os.getenv("ACCESS_TOKEN") if token is not None: env_bearer_token = token try: uvicorn.run(app, host='0.0.0.0', port=6006) except Exception as e: print(f"API启动失败!\n报错:\n{e}")
修改docker配置
docker-composer如下修改
"reRankModels": [ { "model": "bce-reranker-base_v1", "name": "检索重排-base", "charsPointsPrice": 0, "requestUrl": "http://你的服务器ip:6006/v1/rerank", "requestAuth": "sk-xx" } ],
没找到rerank模型
例行检查
- [x ] 我已确认目前没有类似 features
- [ x] 我已确认我已升级到最新版本
- [x ] 我已完整查看过项目 README,已确定现有版本无法满足需求
- [x ] 我理解并愿意跟进此 features,协助测试和提供反馈
- [x] 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 features 可能会被无视或直接关闭
功能描述 一个价格还可以的在线API 应用场景 混合搜索重排 相关示例 代码已经实现
开通服务
百度智能云千帆大模型平台 (baidu.com) 在平台搜索bce-reranker开通,价格 ¥0.002元/千代币
获取AK,SK
百度智能云-管理中心 (baidu.com) 创建 Access Key ,复制它和Secret Key
本地挂脚本
脚本如下,注意替换自己的AK,SK
#!/usr/bin/env python # -*- coding: utf-8 -*- import os import uvicorn from fastapi import FastAPI, Security, HTTPException from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials from pydantic import BaseModel from typing import Optional, List import qianfan from qianfan.resources import Reranker app = FastAPI() security = HTTPBearer() env_bearer_token = 'sk-xxx' class QADocs(BaseModel): query: Optional[str] documents: Optional[List[str]] class Singleton(type): def __call__(cls, *args, **kwargs): if not hasattr(cls, '_instance'): cls._instance = super().__call__(*args, **kwargs) return cls._instance class ReRanker(metaclass=Singleton): def __init__(self): os.environ["QIANFAN_ACCESS_KEY"] = "你的AK" os.environ["QIANFAN_SECRET_KEY"] = "你的SK" self.reranker = Reranker(model="bce-reranker-base_v1") def compute_score(self, query: str, documents: List[str]): if len(documents) > 0: result = self.reranker.do(query, documents) return result.body['results'] else: return None class Chat(object): def __init__(self): self.reranker = ReRanker() def fit_query_answer_rerank(self, query_docs: QADocs) -> List: if query_docs is None or len(query_docs.documents) == 0: return [] scores = self.reranker.compute_score(query_docs.query, query_docs.documents) new_docs = [] for index, score in enumerate(scores): new_docs.append({"index": score['index'], "text": query_docs.documents[score['index']], "score": score['relevance_score']}) results = [{"index": documents["index"], "relevance_score": documents["score"]} for documents in list(sorted(new_docs, key=lambda x: x["score"], reverse=True))] return results @app.post('/v1/rerank') async def handle_post_request(docs: QADocs, credentials: HTTPAuthorizationCredentials = Security(security)): token = credentials.credentials if env_bearer_token is not None and token != env_bearer_token: raise HTTPException(status_code=401, detail="Invalid token") chat = Chat() try: results = chat.fit_query_answer_rerank(docs) return {"results": results} except Exception as e: print(f"报错:\n{e}") return {"error": "重排出错"} if __name__ == "__main__": token = os.getenv("ACCESS_TOKEN") if token is not None: env_bearer_token = token try: uvicorn.run(app, host='0.0.0.0', port=6006) except Exception as e: print(f"API启动失败!\n报错:\n{e}")
修改docker配置
docker-composer如下修改
"reRankModels": [ { "model": "bce-reranker-base_v1", "name": "检索重排-base", "charsPointsPrice": 0, "requestUrl": "http://你的服务器ip:6006/v1/rerank", "requestAuth": "sk-xx" } ],
没找到rerank模型
登录后 在 https://console.bce.baidu.com/qianfan/chargemanage/list ctrl+f搜索
没有找到你提的模型,只找到了bce-reranker-base,相应的更改了py代码以及config.json的模型名称,运行后报错如下
The provided model bce-reranker-base
is not in the list of supported models. If this is a recently added model, try using the endpoint
arguments and create an issue to tell us. Supported models: {'bce-reranker-base_v1'}
是百度返回来的信息,看样模型就是_v1这个名字,改成v1好了,多谢
另外,可否适配一下百度的语音模型,替代whisper
例行检查
[x ] 我已确认目前没有类似 features
[ x] 我已确认我已升级到最新版本
[x ] 我已完整查看过项目 README,已确定现有版本无法满足需求
[x ] 我理解并愿意跟进此 features,协助测试和提供反馈
我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 features 可能会被无视或直接关闭
功能描述 一个价格还可以的在线API 应用场景 混合搜索重排 相关示例 代码已经实现
开通服务
百度智能云千帆大模型平台 (baidu.com) 在平台搜索bce-reranker开通,价格 ¥0.002元/千代币
获取AK,SK
百度智能云-管理中心 (baidu.com) 创建 Access Key ,复制它和Secret Key
本地挂脚本
脚本如下,注意替换自己的AK,SK
修改docker配置
docker-composer如下修改 "reRankModels": [ { "model": "bce-reranker-base_v1", "name": "检索重排-base", "charsPointsPrice": 0, "requestUrl": "http://你的服务器ip:6006/v1/rerank", "requestAuth": "sk-xx" } ],
https://blog.skyw.cc/archives/312.html
没找到rerank模型
登录后 在 https://console.bce.baidu.com/qianfan/chargemanage/list ctrl+f搜索
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>
百度rerank有文档数量限制,知识库分片后很容易超过这个限制,有没有办法把请求按照64个文档拆分成多个请求发送 @xy3xy3
修改发送documents数组的内容,让他只取前64个发送给百度reranker
例行检查
功能描述
一个价格还可以的在线API
应用场景
混合搜索重排
相关示例
代码已经实现
开通服务
百度智能云千帆大模型平台 (baidu.com)
在平台搜索bce-reranker开通,价格 ¥0.002元/千tokens
获取AK,SK
百度智能云-管理中心 (baidu.com) 创建 Access Key ,复制它和Secret Key
本地挂脚本
脚本如下,注意替换自己的AK,SK
修改docker配置
docker-composer如下修改
https://blog.skyw.cc/archives/312.html