Maison > interface Web > js tutoriel > Configurer PostgreSQL avec pgvector dans un conteneur Docker

Configurer PostgreSQL avec pgvector dans un conteneur Docker

Susan Sarandon
Libérer: 2024-12-02 17:07:12
original
882 Les gens l'ont consulté

Setup PostgreSQL w/ pgvector in a docker container

Cet article fait suite à mon article précédent sur la façon de configurer une instance MySQL locale dans Docker.

RAG (Retrieval Augmented Generation) est en train de devenir rapidement le « Hello World » des applications d'IA. Si vous travaillez ou jouez avec des modèles de langage étendus, vous devrez sans aucun doute créer un pipeline RAG à un moment donné. Un composant important de RAG est une base de données vectorielles, et une option populaire est pgvector - une recherche de similarité vectorielle open source pour Postgres. Voici comment configurer rapidement une instance locale dans un conteneur Docker.

Tirez et exécutez l'image

Extrayez la dernière image du référentiel Docker. Remplacez 17 par la version de votre serveur Postgres de votre choix.

docker pull pgvector/pgvector:pg17
Copier après la connexion

Exécutez l'image, définissez le mot de passe de l'utilisateur root et exposez le port Postgres par défaut.

docker run -d --name <container_name> -e POSTGRES_PASSWORD=postgres -p 5432:5432 pgvector/pgvector:pg17
Copier après la connexion

Créer une base de données à l'intérieur du conteneur

Avec le serveur Postgres en cours d'exécution, créez une base de données à l'intérieur du conteneur.

docker exec -it <container_name> createdb -U postgres <database_name>
Copier après la connexion

Connectez-vous à la base de données

Nous pouvons maintenant nous connecter à la base de données depuis notre application et initialiser l'extension pgvector. J'utiliserai JavaScript. La configuration de l'ensemble de l'application sort du cadre de cet article, mais vous devrez installer quelques dépendances :

pnpm add pg pgvector
Copier après la connexion

Définissez une DATABASE_URL dans votre environnement. J'utilise un fichier .env. Il doit suivre ce format :

DATABASE_URL=postgresql://<pg_user>:<pg_password>@localhost:5432/<database_name>
Copier après la connexion

Pour le développement local, utilisez @localhost, mais si vous utilisez quelque chose comme docker-compose.yml et que vous avez nommé le service, vous devez utiliser le nom du service, par exemple. @db.

Dans votre code d'application, créez la connexion :

const pool = new pg.Pool({
  connectionString: process.env.DATABASE_URL,
});
Copier après la connexion

Ensuite, initialisez pgvector et créez une nouvelle table :

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
    }),
  };
}
Copier après la connexion

Avec la configuration de vectorStore, vous pouvez y ajouter du contenu à l'aide de vectorStore.addDocuments et interroger le contexte à l'aide de vectorStore.similaritySearch.

C'est tout pour ce post. Peut-être que la prochaine fois j'explorerai des utilisations plus spécifiques de pgvector, et/ou de l'utiliser avec Drizzle ORM ! ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal