Tham Khảo API
Embeddings
Tạo vector embeddings cho tìm kiếm ngữ nghĩa, RAG, phân cụm và phát hiện tương đồng. Truy cập các mô hình từ OpenAI, Cohere, Voyage, BGE-M3 và nhiều hơn nữa qua một endpoint duy nhất.
Endpoint
http
POST https://api.tokspan.com/v1/embeddingsTham Số Yêu Cầu
| Tham Số | Kiểu | Bắt Buộc | Mô Tả |
|---|---|---|---|
| model | string | Có | ID mô hình embedding (ví dụ: text-embedding-3-large, text-embedding-3-small, voyage-3) |
| input | string / array | Có | Văn bản cần nhúng. Truyền một chuỗi cho một embedding hoặc một mảng chuỗi cho batch (tối đa 2048 mục mỗi yêu cầu). |
| dimensions | integer | Không | Giảm số chiều đầu ra để tiết kiệm dung lượng lưu trữ và cải thiện tốc độ tìm kiếm. Được hỗ trợ bởi các mô hình text-embedding-3. Phải ≤ số chiều tối đa của mô hình. |
| encoding_format | string | Không | "float" (mặc định) hoặc "base64" để truyền tải gọn nhẹ. |
| user | string | Không | Định danh người dùng cuối cho mục đích giám sát lạm dụng. |
Embedding Đơn
python
from openai import OpenAI
client = OpenAI(
api_key="sk-your-key",
base_url="https://api.tokspan.com/v1",
)
response = client.embeddings.create(
model="text-embedding-3-large",
input="Your text string for embedding",
dimensions=1024, # Optional: reduce dimensions
)
embedding = response.data[0].embedding
print(f"Vector dimension: {len(embedding)}")Embedding Hàng Loạt
Gửi tối đa 2048 đầu vào trong một yêu cầu duy nhất để đạt thông lượng tối đa. Phản hồi giữ nguyên thứ tự đầu vào — response.data[0] tương ứng với input[0].
python
# Batch embedding — process up to 2048 inputs per request
texts = ["First document", "Second document", "Third document"]
response = client.embeddings.create(
model="text-embedding-3-large",
input=texts,
dimensions=1024,
)
for i, data in enumerate(response.data):
print(f"Text {i}: vector[:5] = {data.embedding[:5]}...")Giảm Số Chiều
Các mô hình như text-embedding-3-large (tối đa 3072 chiều) và text-embedding-3-small (tối đa 1536 chiều) hỗ trợ giảm số chiều đầu ra thông qua tham số dimensions.
Tại sao nên giảm số chiều?
- Lưu trữ nhỏ hơn: Một vector 256 chiều sử dụng ít hơn 12 lần dung lượng so với 3072 chiều
- Tìm kiếm nhanh hơn: Ít chiều hơn = tính toán cosine similarity nhanh hơn
- Chất lượng đủ tốt: Đối với hầu hết trường hợp sử dụng, 256–512 chiều giữ lại ~95%+ chất lượng ngữ nghĩa
| Số Chiều | Lưu Trữ (trên 1M vector) | Chất Lượng | Phù Hợp Nhất Cho |
|---|---|---|---|
| 256 | ~1 GB | Tốt | Tìm kiếm quy mô lớn, ứng dụng nhạy cảm về chi phí |
| 512 | ~2 GB | Rất Tốt | RAG đa năng và tìm kiếm ngữ nghĩa |
| 1024 | ~4 GB | Xuất Sắc | Tìm kiếm độ chính xác cao, phân cụm |
| 3072 | ~12 GB | Tối Đa | Độ chính xác tối đa, tập dữ liệu nhỏ |
Công Thức Tìm Kiếm Ngữ Nghĩa
python
import numpy as np
def cosine_similarity(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
# Embed your document corpus (do this once, store results)
doc_embeddings = client.embeddings.create(model="text-embedding-3-large", input=documents)
# Embed a search query
query_embedding = client.embeddings.create(model="text-embedding-3-large", input="How do I reset my password?")
# Find most similar documents
scores = [cosine_similarity(query_embedding.data[0].embedding, d.embedding) for d in doc_embeddings.data]
top_idx = np.argmax(scores)
print(f"Best match: {documents[top_idx]} (score: {scores[top_idx]:.3f})")Mẹo hay: Đối với RAG production, hãy kết hợp embeddings với Rerank để tạo pipeline hai giai đoạn: truy xuất thô bằng embeddings (nhanh + rẻ), sau đó sắp xếp lại chính xác trên 20–50 kết quả hàng đầu.
Mô Hình Khả Dụng
| Mô Hình | Nhà Cung Cấp | Số Chiều Tối Đa | Phù Hợp Nhất Cho |
|---|---|---|---|
| text-embedding-3-large | OpenAI | 3072 | Độ chính xác tối đa, giảm số chiều linh hoạt |
| text-embedding-3-small | OpenAI | 1536 | Tiết kiệm chi phí, chất lượng tốt |
| Cohere Embed v3 | Cohere | 1024 | Đa ngôn ngữ, hiệu suất tìm kiếm mạnh mẽ |
| Voyage AI | Voyage | 1024 / 2048 | Embeddings cho code và tài liệu pháp lý |
| BGE-M3 | BAAI | 1024 | Mã nguồn mở, đa ngôn ngữ, thân thiện với tự lưu trữ |
Xem trang Mô Hình để biết danh mục đầy đủ với giá theo token hiện tại.