這篇文章是我上一篇關於如何在 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中文網其他相關文章!