DockerでWeaviateベクトルデヌタベヌスを䜿い始める方法

投皿日: 9月 19, 2023

ベクタヌデヌタベヌスは、開発者コミュニティが倧芏暡蚀語モデル(LLM)をどのように匷化できるかを認識しお以来、倚くの泚目を集めおいたす。 Weaviate は、ベクタヌ怜玢、ハむブリッド怜玢、生成怜玢などの最新の怜玢機胜を可胜にするオヌプン゜ヌスのベクタヌデヌタベヌスです。 Weaviate を䜿甚するず、高床な LLM アプリケヌション、次のレベルの怜玢システム、レコメンデヌションシステムなどを構築できたす。

この蚘事では、ベクタヌデヌタベヌスずは䜕かを説明し、Weaviate ベクタヌデヌタベヌス の䞻な機胜に焊点を圓おたす。 Docker Compose を䜿甚しお Weaviate を Docker にむンストヌルし、Dockerized 環境内でセマンティック怜玢を利甚できるようにする方法に぀いお説明したす。

バナヌ DockerでWeaviate Vectorデヌタベヌスを蚭定する方法

りィヌノィ゚むトベクトルデヌタベヌスの玹介

ベクタヌデヌタベヌスのコア機胜は、デヌタオブゞェクトの ベクタヌ 埋め蟌みを栌玍するこずです。 この機胜は、埓来のリレヌショナルデヌタベヌスでは管理や凊理が困難な非構造化デヌタ(テキストや画像など)の量が増えおいる堎合に特に圹立ちたす。 ベクトル埋め蟌みは、デヌタオブゞェクトの数倀衚珟であり、通垞は機械孊習(ML)モデルによっお生成され、セマンティック類䌌性に基づいおデヌタの怜玢ず取埗を可胜にしたす(ベクトル怜玢)。

ベクタヌデヌタベヌスは、ベクタヌ埋め蟌みを栌玍するだけではありたせん:ご想像のずおり、類䌌性に基づいおデヌタを取埗するには、オブゞェクト間で倚くの比范が必芁になるため、長い時間がかかる堎合がありたす。 ベクトル埋め蟌みを栌玍できる他のタむプのデヌタベヌスずは察照的に、ベクトルデヌタベヌスはデヌタを高速に取埗できたす。 䜎レむテンシの怜玢ク゚リを有効にするために、ベクタヌデヌタベヌスは 特定のアルゎリズムを䜿甚しおデヌタのむンデックスを䜜成したす。

さらに、Weaviateなどの䞀郚のベクタヌデヌタベヌスには、ベクタヌ埋め蟌みず元のデヌタオブゞェクトが栌玍されおいるため、埓来の怜玢 ず 最新のベクタヌ怜玢を組み合わせお、より正確な怜玢結果を埗るこずができたす。

これらの機胜により、ベクタヌデヌタベヌスは通垞、怜玢たたは同様のタスク(レコメンダヌシステムなど)で䜿甚されたす。 しかし、LLM空間の最近の進歩により、ベクトルデヌタベヌスは、䌚話型LLMに長期蚘憶ずドメむン固有のコンテキストを提䟛するのにも効果的であるこずが蚌明されおいたす。 これは、個人デヌタたたは特定の専門分野でLLM機胜を掻甚できるこずを意味したす。

Weaviateベクタヌデヌタベヌスの䞻なハむラむトは次のずおりです。

  • オヌプン゜ヌス Weaviateはオヌプン゜ヌスであり、誰でも奜きな堎所で䜿甚するこずができたす。 たた、SaaSおよびハむブリッドSaaSオプションを備えた マネヌゞドサヌビス ずしおも利甚できたす。
  • 氎平方向のスケヌラビリティ: 最倧むンゞェスト、可胜な限り最倧のデヌタセット サむズ、1 秒あたりの最倧ク゚リなど、正確なニヌズに合わせお数十億のデヌタ オブゞェクトにシヌムレスにスケヌリングできたす。
  • 超高速ベクトル怜玢: フィルタヌを䜿甚しおも、生のベクトルたたはデヌタオブゞェクトに察しお超高速の玔粋なベクトル類䌌性怜玢を実行できたす。 Weaviateは通垞、100ミリ秒未満で数癟䞇のオブゞェクトの最近傍怜玢を実行したす( ベンチマヌクを参照)。
  • キヌワヌドずベクトルを組み合わせた怜玢(ハむブリッド怜玢): デヌタ オブゞェクトずベクタヌ埋め蟌みの䞡方を栌玍できたす。 このアプロヌチにより、キヌワヌドベヌスの怜玢ずベクトル怜玢を組み合わせお、最先端の怜玢結果を埗るこずができたす。
  • クラりドネむティブ環境向けに最適化: Weaviate はクラりドネむティブ デヌタベヌスのフォヌルト トレランスを備えおおり、コア Docker むメヌゞは 18 MB ず比范的小さいです。
  • シヌムレスな統合のためのモゞュラヌ゚コシステム :Weaviateスタンドアロン(別名「独自のベクトルを持ち蟌む」)、たたはOpenAI、Cohere、 Hugging Face などず盎接統合するさたざたなオプション モゞュヌル を䜿甚しお、最先端のMLモデルを簡単に䜿甚できたす。これらのモゞュヌルは、あらゆるメディアタむプ(テキスト、画像など)を自動的にベクトル化するベクタラむザヌずしお、たたはWeaviateのコア機胜(質問応答、生成怜玢など)を拡匵する生成モゞュヌルずしお䜿甚できたす。

前提 条件

ず docker-compose CLI ツヌルの䞡方dockerがむンストヌルされおいるこずを確認したす。次のセクションでは、Docker 17.09.0 以降ず Docker Compose V2 がむンストヌルされおいるこずを前提ずしおいたす。 システムに V2 ではなく Docker Compose V1 がむンストヌルされおいる堎合は、 docker-compose  の代わりに docker composeを䜿甚したす。 Docker 䜜成のバヌゞョンは、次の方法で確認できたす。

$ docker compose version

Docker 䜜成ファむルを Weaviate 甚に構成する方法

Docker Compose で Weaviate を起動するには、 Docker Compose 構成ファむル (通垞は docker-compose.ymlず呌ばれたす) が必芁です。 通垞、Docker Compose ファむル党䜓を配垃するため、個々のむメヌゞを取埗する必芁はありたせん。

Weaviate の Docker Compose ファむルは、次の 2 ぀の方法で取埗できたす。

  • Docker Compose configuratoりィヌノィ゚むトのりェブサむト䞊のr(掚奚): コンフィギュレヌタヌを䜿甚するず docker-compose.yml 、目的に合わせおファむルをカスタマむズし(すべおのモゞュヌルコンテナを含む)、盎接ダりンロヌドできたす。
  • 手動 たたは、コンフィギュレヌタヌを䜿甚しない堎合は、ドキュメントから サンプルファむルの 1぀をコピヌしお貌り付け、手動で倉曎したす。

この蚘事では、 Weaviate Docker Compose コンフィギュレヌタヌを䜿甚しお Docker Compose ファむルを構成する手順に぀いお説明したす。

ステップ1:バヌゞョン

たず、䜿甚する Weaviate のバヌゞョンを定矩したす (図 1)。 垞に最新バヌゞョンを䜿甚するこずをお勧めしたす。

最新のWeaviateバヌゞョンの䜿甚を掚奚するダむアログボックス。 テキストには次のように曞かれおいたす:互換性のために叀いバヌゞョンを遞択するこずもできたすが、すべおの機胜が利甚できるわけではありたせん。 arm64 ハヌドりェアで実行しおいる堎合は、v1を遞択しおください。4。0 かそれ以䞊です。」
図 1: Weaviate Docker Compose コンフィギュレヌタヌを䜿甚する堎合の最初のステップで、最新バヌゞョンの䜿甚を提案したす。

以䞋は、Weaviate の Docker 䜜成セットアップの最小限の䟋を瀺しおいたす。

version: '3.4'
services:
  weaviate:
    image: semitechnologies/weaviate:1.20.5
    ports:
    - 8080:8080
    restart: on-failure:0
    environment:
      QUERY_DEFAULTS_LIMIT: 25
      AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
      PERSISTENCE_DATA_PATH: '/var/lib/weaviate'
      DEFAULT_VECTORIZER_MODULE: 'none'
      CLUSTER_HOSTNAME: 'node1'

ステップ 2: 氞続ボリュヌム

Docker 䜜成ファむルの 氞続ボリュヌム を構成したす (図 2)。

「デヌタの損倱を防ぎ、読み取りず曞き蟌みの速床を向䞊させるために、氞続ボリュヌムを蚭定するこずをお勧めしたす」ず衚瀺される氞続ボリュヌムダむアログボックス。
図2: Docker Compose コンフィギュレヌタヌの "氞続ボリュヌム" 構成オプションを織りたす。

コンテナヌを再起動するずきにデヌタが倱われるのを防ぎ、読み取りず曞き蟌みの速床を向䞊させるために氞続ボリュヌムを蚭定するこずをお勧めしたす。

氞続ボリュヌムは、次の 2 ぀の方法で蚭定できたす。

  • 名前付きボリュヌムの堎合: Docker は名前付きボリュヌム weaviate_data を䜜成し、Docker Compose で Weaviate を起動した埌、 PERSISTENCE_DATA_PATH コンテナ内にマりントしたす。
services:
      weaviate:
        volumes:
            - weaviate_data:/var/lib/weaviate
        # etc.
   
    volumes:
        weaviate_data:
  • ホスト・バむンディングの堎合:Docker は、Docker Compose で Weaviate を起動した埌、PERSISTENCE_DATA_PATHホスト䞊のコンテナ内にマりント./weaviate_dataされたす。
     services:
      weaviate:
        volumes:
          - ./weaviate_data:/var/lib/weaviate
        # etc.

ステップ3:モゞュヌル

Weaviate は、OpenAI 、 Cohere、Hugging Face などの掚論サヌビスず盎接統合するさたざたな モゞュヌル で䜿甚できたす。これらのモゞュヌルは、むンポヌト時および怜玢時に任意のメディアタむプを自動的にベクトル化したり、生成モゞュヌルでWeaviateのコア機胜を拡匵したりするために䜿甚できたす。

モゞュヌルなしでWeaviateを䜿甚するこずもできたす(スタンドアロン)。 この堎合、むンポヌト時たたは怜玢時にモデル掚論は実行されないため、䞡方のシナリオで独自のベクトルを指定する必芁がありたす。 モゞュヌルが必芁ない堎合は、「ステップ 4: ランタむム」に進んでください。

Docker 䜜成ファむルのモゞュヌルを構成したす (図 3)。

「モゞュヌルを含めたすか、それずもWeaviateをスタンドアロンのベクタヌデヌタベヌスずしお実行したすか?」ず尋ねるダむアログボックス
図 3: Weaviate Docker Compose コンフィギュレヌタヌの手順で、モゞュヌルを䜿甚するかどうか、たたはスタンドアロンで実行する必芁があるかどうかを定矩したす。

珟圚、Weaviateは3぀のカテゎリのモゞュヌルを統合しおいたす。

  • レトリヌバヌおよびベクタラむザヌモゞュヌルは 、むンポヌト時および怜玢時に任意のメディアタむプ(テキスト、画像など)を自動的にベクトル化したす。 怜玢結果を再ランク付けするために利甚できる再ランカヌモゞュヌルもありたす。
  • リヌダヌモゞュヌルずゞェネレヌタヌモゞュヌルは 、生成怜玢、質問応答、固有衚珟認識(NER)、芁玄のためのデヌタを取埗した埌、Weaviateのコア機胜を拡匵するために䜿甚できたす。
  • 他のモゞュヌルは 、スペルチェックやカスタムモゞュヌルの䜿甚を有効にするために䜿甚できたす。

倚くのモゞュヌル(トランスフォヌマヌモデルなど)は、GPU䞊で実行するように構築されたニュヌラルネットワヌクであるこずに泚意しおください。 CPU で実行するこずもできたすが、䜿甚可胜な堎合は GPU `ENABLE_CUDA=1`を有効にするず、掚論が高速になりたす。

以䞋は、 センテンストランスフォヌマヌモデルを䜿甚した Weaviate の Docker 䜜成セットアップの䟋を瀺しおいたす。

version: '3.4'
services:
  weaviate:
    image: semitechnologies/weaviate:1.20.5
    restart: on-failure:0
    ports:
     - "8080:8080"
    environment:
      QUERY_DEFAULTS_LIMIT: 20
      AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
      PERSISTENCE_DATA_PATH: "./data"
      DEFAULT_VECTORIZER_MODULE: text2vec-transformers
      ENABLE_MODULES: text2vec-transformers
      TRANSFORMERS_INFERENCE_API: http://t2v-transformers:8080
      CLUSTER_HOSTNAME: 'node1'
  t2v-transformers:
    image: semitechnologies/transformers-inference:sentence-transformers-multi-qa-MiniLM-L6-cos-v1
    environment:

ステップ4:ランタむム

コンフィギュレヌタヌの最埌の手順で、ランタむムの [Docker Compose ] を遞択したす (図 4)。

目的のランタむムを遞択するためのダむアログ ボックス (「この構成ゞェネレヌタヌを䜿甚しお、Docker-compose や Kubernetes (Helm) などのさたざたなランタむムのテンプレヌトを生成できたす」ず衚瀺されたす。
図 4: ランタむムずしお "Docker Compose" を遞択できる Weaviate Docker Compose コンフィギュレヌタヌの最埌のステップ。

ステップ5:ダりンロヌドずさらなるカスタマむズ

構成が完了するず、次のようなスニペット docker-compose.yml が衚瀺され、遞択した構成に合わせお調敎されたファむルをダりンロヌドできたす。

$ curl -o docker-compose.yml "https://configuration.weaviate.io/v2/docker-compose/docker-compose.yml?<YOUR-CONFIGURATION>"

コンフィギュレヌタヌから Docker Compose ファむルをダりンロヌドしたら、Docker で Weaviate を盎接起動したり、さらにカスタマむズしたりできたす。

远加の環境倉数を蚭定しお、Weaviateのセットアップをさらにカスタマむズできたす(認蚌ず承認を定矩するなど)。さらに、Weaviate を䜿甚しおマルチノヌドセットアップを䜜成するには、クラスタヌ内の創蚭メンバヌず他のメンバヌを定矩したす。

創立メンバヌ: 1 ぀のノヌドを「創蚭」メンバヌずしお蚭定するには、次のように構成 CLUSTER_GOSSIP_BIND_PORT したす CLUSTER_DATA_BIND_PORT。

  weaviate-node-1:  # Founding member service name
    ...  # truncated for brevity
    environment:
      CLUSTER_HOSTNAME: 'node1'
      CLUSTER_GOSSIP_BIND_PORT: '7100'
      CLUSTER_DATA_BIND_PORT: '7101'

クラスタヌ内の他のメンバヌ:以降のノヌドごずに、倉数を䜿甚しおCLUSTER_JOIN、創蚭メンバヌのクラスタヌに参加するように構成しCLUSTER_DATA_BIND_PORT、CLUSTER_GOSSIP_BIND_PORT構成したす。

 weaviate-node-2:
        ...  # truncated for brevity
        environment:
          CLUSTER_HOSTNAME: 'node2'
          CLUSTER_GOSSIP_BIND_PORT: '7102'
          CLUSTER_DATA_BIND_PORT: '7103'
          CLUSTER_JOIN: 'weaviate-node-1:7100'  # This must be the service name of the "founding" member node.

オプションで、を䜿甚しお各ノヌドの CLUSTER_HOSTNAMEホスト名を蚭定できたす。

を CLUSTER_DATA_BIND_PORT 1 より CLUSTER_GOSSIP_BIND_PORT高く蚭定するのは Weaviate の慣䟋であるこずに泚意しおください。

DockerでWeaviateを実行する方法

必芁に応じお Docker Compose ファむルを構成したら、Docker 環境で Weaviate を実行できたす。

りィヌアビ゚むトを開始

Docker で Weaviate を起動する前に、Docker Compose ファむルの名前が正確 docker-compose.yml であるこず、および Docker Compose ファむルず同じフォルダヌにいるこずを確認しおください。

次に、次のコマンドを実行しお、セットアップ党䜓を起動できたす。

$ docker compose up -d

このオプションは、 -d コンテナヌをデタッチ モヌドで実行したす。 これは、タヌミナルがすべおのコンテナのログ出力にアタッチされないこずを意味したす。

特定のコンテナ(Weaviateなど)のログにアタッチする堎合は、次のコマンドを実行したす。

$ docker compose up -d && docker compose logs -f weaviate

䞇䞈Weaviate は珟圚皌働しおおり、䜿甚する準備が敎いたした。

ストップりィヌビ゚むト

デヌタの損倱を回避するには、次のコマンドで Weaviate をシャットダりンしたす。

$ docker compose down

これにより、すべおのファむルがメモリからディスクに曞き蟌たれたす。

結論

この蚘事では、ベクトルデヌタベヌスず、それらがLLMアプリケヌションを匷化する方法を玹介したした。 具䜓的には、オヌプン゜ヌスのベクタヌデヌタベヌス Weaviateに焊点を圓お、その利点には、倧芏暡な高速ベクタヌ怜玢、ハむブリッド怜玢、OpenAI、Cohere、Hugging Faceなどの最先端のMLモデルぞの統合モゞュヌルが含たれたす。

たた、Docker Compose を䜿甚しお Weaviate を Docker にむンストヌルする方法に぀いおのステップバむステップガむドも提䟛し、 Weaviate Docker Compose コンフィギュレヌタヌ からファむルを取埗 docker-compose.yml できるため、特定のニヌズに合わせお Docker Compose ファむルをカスタマむズできるこずに留意したした。

AI / MLペヌゞ にアクセスし、 蚘事コレクション を読んで、開発者がDockerを䜿甚しおAI/MLアプリケヌションの開発を加速する方法に぀いお詳しく孊んでください。

さらに詳しく

関連蚘事