Эмбеддинги
Полный список моделей можно посмотреть на странице Модели или получить динамически через API эндпоинты: https://openai.bothub.chat/v1/models и https://bothub.chat/api/v2/replicate/v1/models`
Эмбеддинги — это числовые представления текста, которые позволяют моделям понимать смысл и семантическую близость между словами, предложениями или целыми документами.
Когда текст преобразуется в embedding-вектор, модель сохраняет не сами слова, а их смысловое представление. Благодаря этому можно сравнивать тексты между собой, находить похожий контент и выполнять интеллектуальный поиск.
Эмбеддинги активно используются в AI-приложениях, поисковых системах и RAG-сценариях (Retrieval-Augmented Generation), где модель работает с внешней базой знаний.
Где используются эмбеддинги
Эмбеддинги особенно полезны в задачах, где важно понимать смысл текста, а не просто совпадение слов. Например, они используются для семантического поиска, поиска похожих документов, рекомендаций контента, интеллектуальных чат-ботов, кластеризации текстов и классификации данных.
Также embeddings являются важной частью RAG-систем, где модель сначала ищет релевантную информацию в базе знаний, а затем использует её при генерации ответа.
Доступные модели
У нас доступны следующие embedding-модели:
text-embedding-3-small(для быстрых и недорогих задач)text-embedding-3-large(для более высокого качества и точности поиска)text-embedding-ada-002
Генерация эмбеддингов
Для создания embedding-вектора отправьте текст через API и укажите embedding-модель. В ответ API вернёт массив чисел, который можно использовать для поиска, сравнения или хранения в векторной базе.
Ниже приведён базовый пример генерации эмбеддингов с использованием модели text-embedding-3-large.
- JS
- Python
- Go
- cURL
async function main() {
const response = await openai.embeddings.create({
model: 'text-embedding-3-large',
input: 'The food was delicious and the waiter...',
encoding_format: 'float'
});
const embedding = response.data[0].embedding;
console.log(embedding);
}
main();
def main():
response = client.embeddings.create(
model="text-embedding-3-large",
input="The food was delicious and the waiter...",
encoding_format="float"
)
embedding = response.data[0].embedding
print(embedding)
main()
package main
import (
"context"
"fmt"
"github.com/openai/openai-go"
"github.com/openai/openai-go/option"
)
func main() {
client := openai.NewClient(
option.WithAPIKey("<ваш токен доступа>"),
option.WithBaseURL("https://openai.bothub.chat/v1"),
)
response, err := client.Embeddings.New(context.Background(), openai.EmbeddingNewParams{
Model: openai.EmbeddingModelTextEmbedding3Large,
Input: openai.EmbeddingNewParamsInputUnion{OfString: openai.String("The food was delicious and the waiter...")},
EncodingFormat: openai.EmbeddingNewParamsEncodingFormatFloat,
})
if err != nil {
panic(err)
}
fmt.Println(response.Data[0].Embedding)
}
curl https://openai.bothub.chat/v1/embeddings \
-X POST \
-H "Authorization: Bearer <ваш токен доступа>" \
-H "Content-Type: application/json" \
-d '{
"input": "The food was delicious and the waiter...",
"model": "text-embedding-3-large",
"encoding_format": "float"
}'
Формат ответа
В ответ API возвращает объект с embedding-вектором. Сам вектор представляет собой массив чисел с плавающей точкой (float), который описывает смысл текста в многомерном пространстве.
Полученные embeddings обычно сохраняются во внешней векторной базе или используются для вычисления семантической близости между текстами.
Пример доступа к embedding-вектору:
const embedding = response.data[0].embedding;
Основные параметры
| Параметр | Тип | Описание |
|---|---|---|
model | string | Embedding-модель |
input | string | array | Текст или массив текстов |
encoding_format | string | Формат embedding-вектора (float или base64) |
Рекомендации
Для большинства задач рекомендуется использовать text-embedding-3-large, если вам важна максимальная точность поиска и сравнения текстов.
Если приоритетом являются скорость и стоимость, лучше подойдёт text-embedding-3-small.
Официальную документацию OpenAI по embeddings можно посмотреть здесь