api-embedding / API_DOCS.md
fahmiaziz98
docs: update api documentation
65d1c55
|
Raw
History Blame Contribute Delete
5.45 kB
# API Documentation
The Unified Embedding API provides an OpenAI-compatible interface for dense embeddings, sparse embeddings, and document reranking.
**Base URL**
```text
http://localhost:7860/api/v1
```
For Hugging Face Spaces:
```text
https://YOUR_SPACE.hf.space/api/v1
```
---
# Authentication
Authentication is not required by default.
When using the official OpenAI SDK, an API key is still required by the client but its value is ignored.
```python
client = OpenAI(
base_url="https://YOUR_SPACE.hf.space/api/v1",
api_key="not-required"
)
```
---
# Endpoints
| Method | Endpoint | Description |
| ------ | --------------- | ------------------------------- |
| POST | `/embeddings` | Generate dense embeddings |
| POST | `/embed_sparse` | Generate sparse embeddings |
| POST | `/rerank` | Rank documents based on a query |
| GET | `/models` | List available models |
| GET | `/health` | Health check |
---
# Dense Embeddings
Generate dense vector embeddings.
## Request
**POST**
```text
/api/v1/embeddings
```
### Body
```json
{
"input": [
"Machine learning",
"Artificial Intelligence"
],
"model": "qwen3-0.6b"
}
```
| Field | Type | Required | Description |
| --------------- | ----------------- | -------- | ---------------------------------- |
| input | string | string[] | Yes | Text or list of texts |
| model | string | Yes | Configured embedding model |
| encoding_format | string | No | Currently returns float embeddings |
---
## Response
```json
{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": [
0.124,
-0.554,
0.873
]
}
],
"model": "qwen3-0.6b",
"usage": {
"prompt_tokens": 2,
"total_tokens": 2
}
}
```
---
## Python (OpenAI SDK)
```python
from openai import OpenAI
client = OpenAI(
base_url="https://YOUR_SPACE.hf.space/api/v1",
api_key="not-required"
)
response = client.embeddings.create(
input="Large Language Models",
model="qwen3-0.6b"
)
embedding = response.data[0].embedding
```
---
## cURL
```bash
curl -X POST \
http://localhost:7860/api/v1/embeddings \
-H "Content-Type: application/json" \
-d '{
"input":"Large Language Models",
"model":"qwen3-0.6b"
}'
```
---
# Sparse Embeddings
Generate sparse embeddings (SPLADE).
## Request
```text
POST /api/v1/embed_sparse
```
### Body
```json
{
"input": [
"Hybrid Search"
],
"model": "splade"
}
```
---
## Response
```json
{
"object":"list",
"data":[
{
"index":0,
"indices":[
24,
91,
118
],
"values":[
0.87,
0.41,
0.29
]
}
]
}
```
---
# Document Reranking
Ranks retrieved documents according to their relevance to a query.
## Request
```text
POST /api/v1/rerank
```
### Body
```json
{
"query":"What is LangGraph?",
"documents":[
"LangGraph is an orchestration framework.",
"React is a frontend library.",
"FastAPI is a Python framework."
],
"model":"bge-reranker-base",
"top_k":2
}
```
| Field | Type | Required |
| --------- | -------- | -------- |
| query | string | Yes |
| documents | string[] | Yes |
| model | string | Yes |
| top_k | integer | No |
---
## Response
```json
{
"results":[
{
"index":0,
"score":0.992,
"text":"LangGraph is an orchestration framework."
},
{
"index":2,
"score":0.843,
"text":"FastAPI is a Python framework."
}
]
}
```
---
# Available Models
Returns every configured model.
## Request
```text
GET /api/v1/models
```
## Response
```json
{
"models":[
{
"id":"qwen3-0.6b",
"type":"embeddings"
},
{
"id":"splade",
"type":"sparse-embeddings"
},
{
"id":"bge-reranker-base",
"type":"rerank"
}
]
}
```
---
# Health Check
Check server status.
## Request
```text
GET /health
```
## Response
```json
{
"status":"healthy"
}
```
---
# Error Responses
The API follows standard HTTP status codes.
| Status | Description |
| ------ | --------------------- |
| 200 | Success |
| 400 | Invalid request |
| 404 | Resource not found |
| 422 | Validation error |
| 500 | Internal server error |
Example:
```json
{
"detail":"Model 'unknown-model' is not configured."
}
```
---
# Model Configuration
Available models are defined in:
```text
config/models.yaml
```
Example:
```yaml
models:
qwen3:
name: Qwen/Qwen3-Embedding-0.6B
type: embeddings
splade:
name: prithivida/Splade_PP_en_v1
type: sparse-embeddings
reranker:
name: BAAI/bge-reranker-base
type: rerank
```
Adding a new model only requires updating this configuration file. No application code changes are needed.
---
# OpenAI Compatibility
The `/embeddings` endpoint implements the OpenAI Embeddings API specification.
Migrating from OpenAI usually requires changing only the client configuration.
```python
client = OpenAI(
base_url="https://YOUR_SPACE.hf.space/api/v1",
api_key="not-required"
)
```
Your existing embedding requests can remain unchanged.