この投稿は、Docker でローカル MySQL インスタンスをセットアップする方法に関する以前の投稿の続編です。
RAG (Retrieval Augmented Generation) は、急速に AI アプリの「Hello World」になりつつあります。大規模言語モデルを使用して作業したり遊んだりしている場合は、間違いなく、ある時点で RAG パイプラインを作成する必要があります。 RAG の重要なコンポーネントはベクトル データベースであり、一般的なオプションは pgvector (Postgres 用のオープンソースのベクトル類似性検索) です。 Docker コンテナでローカル インスタンスをすばやくセットアップする方法は次のとおりです。
Docker リポジトリから最新のイメージをプルします。 17 を、選択した Postgres サーバーのバージョンに置き換えます。
docker pull pgvector/pgvector:pg17
イメージを実行し、root ユーザーのパスワードを設定し、デフォルトの Postgres ポートを公開します。
docker run -d --name <container_name> -e POSTGRES_PASSWORD=postgres -p 5432:5432 pgvector/pgvector:pg17
Postgres サーバーが実行されている状態で、コンテナ内にデータベースを作成します。
docker exec -it <container_name> createdb -U postgres <database_name>
これで、アプリケーションからデータベースに接続し、pgvector 拡張機能を初期化できるようになりました。 JavaScriptを使用します。アプリケーション全体のセットアップはこの投稿の範囲外ですが、いくつかの依存関係をインストールする必要があります:
pnpm add pg pgvector
環境に DATABASE_URL を設定します。 .env ファイルを使用します。次の形式に従う必要があります:
DATABASE_URL=postgresql://<pg_user>:<pg_password>@localhost:5432/<database_name>
ローカル開発の場合は @localhost を使用しますが、docker-compose.yml などを使用していてサービスに名前を付けている場合は、サービスの名前を使用する必要があります。 @db.
アプリケーション コードで接続を作成します。
const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL, });
次に、pgvector を初期化し、新しいテーブルを作成します。
async function createStore() { // Initialize pgvector extension and create table if not exists await pool.query('CREATE EXTENSION IF NOT EXISTS vector'); return { vectorStore: await PGVectorStore.initialize(embeddings, { postgresConnectionOptions: { connectionString: process.env.DATABASE_URL, }, tableName: 'documents', // Default table name }), }; }
vectorStore セットアップでは、vectorStore.addDocuments を使用してコンテンツを追加し、vectorStore.similaritySearch を使用してコンテキストをクエリできます。
この投稿はここまでです。次回は、pgvector のより具体的な使用方法、および/または Drizzle ORM との使用方法を検討する予定です。 ?
以上がDocker コンテナーで pgvector を使用して PostgreSQL をセットアップするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。