首頁 >web前端 >js教程 >在 docker 容器中設定 PostgreSQL w/ pgvector

在 docker 容器中設定 PostgreSQL w/ pgvector

Susan Sarandon
Susan Sarandon原創
2024-12-02 17:07:12867瀏覽

Setup PostgreSQL w/ pgvector in a docker container

這篇文章是我上一篇關於如何在 docker 中設定本地 MySQL 實例的文章的後續。

RAG(檢索增強生成)正迅速成為人工智慧應用程式的「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 容器中設定 PostgreSQL w/ pgvector的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn