Почему при использовании LangChainJS для подключения к Weaviate в Docker отказано в соединении?

Я пытаюсь использовать Weaviate в качестве векторного хранилища в приложении, которое собираю. Я запускаю Weaviate и свой сервер NodeJs в контейнерах в сети Docker Compose по умолчанию. Они подключаются, но Weaviate, кажется, отказывается от соединений, и я не могу понять, почему? Моя конфигурация Docker Compose следующая:

      weaviate:
        image: semitechnologies/weaviate:1.21.3
        environment:
            OPENAI_APIKEY: xxx
            QUERY_DEFAULTS_LIMIT: 25
            AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'false'
            PERSISTENCE_DATA_PATH: '/var/lib/weaviate'
            DEFAULT_VECTORIZER_MODULE: 'text2vec-openai'
            ENABLE_MODULES: 'text2vec-openai'
            CLUSTER_HOSTNAME: 'node1'
            AUTHENTICATION_APIKEY_ENABLED: 'true'
            AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'xxx'
            AUTHENTICATION_APIKEY_USERS: 'my_app'
        ports:
            - 8080:8080
        volumes:
            - ./docker/weaviate/vectors:/var/lib/weaviate
        command:
            - --port
            - '8080'
            - --scheme
            - http

В своем приложении я создаю клиент Weaviate и подключаюсь следующим образом:

      const client = weaviate.client({
  scheme: 'http',
  host: 'weaviate:8080',
  apiKey: new weaviate.ApiKey('xxx')
});

await WeaviateStore.fromTexts(
  texts,
  metadata,
  new OpenAIEmbeddings(),
  {
    client,
    indexName: 'foo',
    textKey: 'text',
    metadataKeys: ['source']
  }
);
}

Однако при вызове WeaviateStore.fromTexts() я вижу следующую ошибку:

      Error: 'Error adding vectors' FetchError: request to http://weaviate:8080/v1/batch/objects failed, reason: connect ECONNREFUSED 192.168.48.3:8080

Судя по всему, запрос определяет местонахождение сервера, но он отклоняется. Я также пробовал это без ключа API и настройкиAUTHENTICATION_ANONYMOUS_ACCESS_ENABLEDкtrue, но я получил то же сообщение об ошибке. Какой-нибудь совет о том, что я здесь делаю не так?

1 ответ

Дуда из Weaviate здесь!

В вашем командном операторе отсутствует хост для привязки, поэтому он, вероятно, ничего не прослушивает.

вот рабочий пример:

      services:
    weaviate:
        image: semitechnologies/weaviate:1.21.3
        environment:
            OPENAI_APIKEY: xxx
            QUERY_DEFAULTS_LIMIT: 25
            AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'false'
            PERSISTENCE_DATA_PATH: '/var/lib/weaviate'
            DEFAULT_VECTORIZER_MODULE: 'text2vec-openai'
            ENABLE_MODULES: 'text2vec-openai'
            CLUSTER_HOSTNAME: 'node1'
            AUTHENTICATION_APIKEY_ENABLED: 'true'
            AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'xxx'
            AUTHENTICATION_APIKEY_USERS: 'my_app'
        ports:
            - 8080:8080
        volumes:
            - ./docker/weaviate/vectors:/var/lib/weaviate
        command:
            - --host
            - 0.0.0.0
            - --port
            - '8080'
            - --scheme
            - http

Вы можете использовать наш конфигуратор Docker Compose , если хотите создать индивидуальный docker-compose :)

Спасибо за использование Weaviate!

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