BedrockEmbeddings — botocore.errorfactory.ModelTimeoutException

Я пытаюсь получить масштабные векторные вложения для документов.

  • Импортируем, from langchain_community.embeddings import BedrockEmbeddings пакет.
  • Использование embeddings = BedrockEmbeddings( credentials_profile_name = "default", region_name = "us-east-1", model_id = "amazon.titan-embed-text-v2:0" ) для встраивания документов
  • У меня есть функция, которая встраивает массив документов (называемый batch) с помощью embeddings.embed_documents(batch). Это работает.
  • Размер моего пакета составляет 250. Т. е. массив из 250 строк.
  • Я сталкиваюсь с этой ошибкой время от времени:

botocore.errorfactory.ModelTimeoutException: An error occurred (ModelTimeoutException) when calling the InvokeModel operation: Model has timed out in processing the request. Try your request again.

File "...\site-packages\langchain_community\embeddings\bedrock.py", line 150, in _embedding_func raise ValueError(f"Error raised by inference endpoint: {e}") ValueError: Error raised by inference endpoint: An error occurred (ModelTimeoutException) when calling the InvokeModel operation: Model has timed out in processing the request. Try your request again.

Есть ли у кого-нибудь подсказки или знает, предоставляет ли BedrockEmbeddings какую-либо функцию, которая пытается повторить попытку из-за ошибки timed out?

Библиотека Boto3, используемая для взаимодействия с Bedrock, допускает параметр timeout . Почему бы не попробовать передать такого клиента BedrockEmbeddings

InsertCheesyLine 02.07.2024 07:49
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
68
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Сначала определите свой клиент boto3

from boto3 import client
from botocore.config import Config

config = Config(read_timeout=1000)

client = boto3.client(service_name='bedrock-runtime', 
                      region_name='us-east-1',
                      config=config)

По умолчанию read_timeout — 60, мы можем увеличить это значение.

Теперь определите свой BedrockEmbeddings и передайте клиенту

from langchain_community.embeddings import BedrockEmbeddings

embeddings = BedrockEmbeddings(
    client=client, credentials_profile_name = "bedrock-admin", region_name = "us-east-1"
)
Ответ принят как подходящий

Понял! Видимо, функции встраивания не любят длинных пробелов, новых строк (\n) в тексте. Итак, если они присутствуют в ваших документах, они негативно повлияют на встраивание или просто остановятся.

Я убрал пробелы в тексте, и всё заработало!

Кстати, именно VS Code разделил предложения, чтобы облегчить чтение и программирование, когда я готовил текст. Вот так в моих сообщениях появились \n.

Другие вопросы по теме