72 lines
1.4 KiB
Markdown
72 lines
1.4 KiB
Markdown
# openai_format_embedding
|
||
|
||
一个兼容 OpenAI Embeddings 接口格式的本地向量服务,基本支持所有 huggingface 能找到的嵌入模型。
|
||
|
||
## 功能说明
|
||
|
||
- 提供 `POST /v1/embeddings` 接口
|
||
- 支持单条文本或文本数组输入
|
||
- 返回结构与 OpenAI Embeddings 响应格式一致
|
||
- 可通过环境变量配置模型路径、监听地址、端口和 worker 数
|
||
|
||
## 环境变量
|
||
|
||
可参考 [.env.example](.env.example)。
|
||
|
||
- `EMBEDDING_PATH`:模型目录路径,支持本地路径或 UNC 网络路径
|
||
- `EMBEDDING_HOST`:服务监听地址,默认 `0.0.0.0`
|
||
- `EMBEDDING_PORT`:服务监听端口,默认 `8000`
|
||
- `EMBEDDING_WORKERS`:Uvicorn worker 数,默认 `5`
|
||
|
||
## 安装依赖
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
## 启动服务
|
||
|
||
```
|
||
# 编辑 .env 文件,配置 EMBEDDING_PATH 等参数
|
||
cp .env.example .env
|
||
|
||
# 启动服务
|
||
python main.py
|
||
```
|
||
|
||
## 调用示例
|
||
|
||
```bash
|
||
curl -X POST "http://127.0.0.1:8000/v1/embeddings" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"model": "bge-m3",
|
||
"input": ["hello world", "你好,向量服务"]
|
||
}'
|
||
```
|
||
|
||
返回示例(结构示意):
|
||
|
||
```json
|
||
{
|
||
"data": [
|
||
{
|
||
"object": "embedding",
|
||
"embedding": [0.0123, -0.0456],
|
||
"index": 0
|
||
}
|
||
],
|
||
"model": "bge-m3",
|
||
"object": "list",
|
||
"usage": {
|
||
"prompt_tokens": 2,
|
||
"total_tokens": 4
|
||
}
|
||
}
|
||
```
|
||
|
||
## 说明
|
||
|
||
- `prompt_tokens` 当前实现按空格分词统计
|
||
- `total_tokens` 使用 `cl100k_base` 编码统计
|