Gemini
Milvus интегрируется с моделями Gemini с помощью класса GeminiEmbeddingFunction. Этот класс предоставляет методы для кодирования документов и запросов с помощью предварительно обученных моделей Gemini и возвращает вкрапления в виде плотных векторов, совместимых с индексацией Milvus. Чтобы воспользоваться этой функцией, получите API-ключ от Gemini, создав учетную запись на их платформе.
Чтобы воспользоваться этой функцией, установите необходимые зависимости:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
Затем инстанцируйте GeminiEmbeddingFunction:
from pymilvus import model
gemini_ef = model.dense.GeminiEmbeddingFunction(
model_name='gemini-embedding-exp-03-07', # Specify the model name
api_key='YOUR_API_KEY', # Provide your OpenAI API key
)
Параметры:
имя_модели(строка)
Имя модели Gemini, которую следует использовать для кодирования. Возможные варианты: gemini-embedding-exp-03-07(по умолчанию), models/embedding-001 и models/text-embedding-004.
api_key(строка)
API-ключ для доступа к Gemini API.
config(types.EmbedContentConfig) Необязательная конфигурация для модели встраивания.
- Выходная_размерность может быть указана как количество результирующих выходных вкраплений.
- Тип_задачи может быть указан для создания оптимизированных эмбеддингов для конкретных задач, что позволяет сэкономить время и средства и повысить производительность. Поддерживается только в модели gemini-embedding-exp-03-07.
| Название модели | Размеры |
|---|---|
| gemini-embedding-exp-03-07 | 3072(default),1536,768 |
| models/embedding-001 | 768 |
| models/text-embedding-004 | 768 |
| Тип задачи | Описание |
|---|---|
| СЕМАНТИЧЕСКОЕ_СХОДСТВО | Используется для генерации вкраплений, оптимизированных для оценки сходства текста. |
| КЛАССИФИКАЦИЯ | Используется для генерации вкраплений, оптимизированных для классификации текстов в соответствии с заданными метками. |
| КЛАСТЕРИНГ | Используется для создания вкраплений, оптимизированных для кластеризации текстов на основе их сходства. |
| ВОЗВРАТ_ДОКУМЕНТА, ВОЗВРАТ_ВОПРОСА, ВОПРОС_НЕЗАДАВШИЙСЯ и ФАКТ_ВЕРИФИКАЦИЯ | Используются для генерации вкраплений, оптимизированных для поиска документов или информации. |
| ЗАПРОС_ПОИСКА_КОДА | Используется для получения блока кода на основе запроса на естественном языке, например, для сортировки массива или разворота связанного списка. Вкрапления кодовых блоков вычисляются с помощью RETRIEVAL_DOCUMENT. |
Для создания вкраплений для документов используйте метод encode_documents():
docs = [
"Artificial intelligence was founded as an academic discipline in 1956.",
"Alan Turing was the first person to conduct substantial research in AI.",
"Born in Maida Vale, London, Turing was raised in southern England.",
]
docs_embeddings = gemini_ef.encode_documents(docs)
# Print embeddings
print("Embeddings:", docs_embeddings)
# Print dimension and shape of embeddings
print("Dim:", gemini_ef.dim, docs_embeddings[0].shape)
Ожидаемый результат будет похож на следующий:
Embeddings: [array([-0.00894029, 0.00573813, 0.013351 , ..., -0.00042766,
-0.00603091, -0.00341043], shape=(3072,)), array([ 0.00222347, 0.03725113, 0.01152256, ..., 0.01047272,
-0.01701597, 0.00565377], shape=(3072,)), array([ 0.00661134, 0.00232328, -0.01342973, ..., -0.00514429,
-0.02374139, -0.00701721], shape=(3072,))]
Dim: 3072 (3072,)
Для создания вкраплений для запросов используйте метод encode_queries():
queries = ["When was artificial intelligence founded",
"Where was Alan Turing born?"]
query_embeddings = gemini_ef.encode_queries(queries)
# Print embeddings
print("Embeddings:", query_embeddings)
# Print dimension and shape of embeddings
print("Dim", gemini_ef.dim, query_embeddings[0].shape)
Ожидаемый результат похож на следующий:
Embeddings: [array([-0.02066572, 0.02459551, 0.00707774, ..., 0.00259341,
-0.01797572, -0.00626168], shape=(3072,)), array([ 0.00674969, 0.03023903, 0.01230692, ..., 0.00160009,
-0.01710967, 0.00972728], shape=(3072,))]
Dim 3072 (3072,)