Podés instalar el proceso de búsqueda, mongot, en MongoDB Community Edition. El proceso de búsqueda está disponible para su implementación como imagen en Docker. El proceso mongot ofrece soporte de texto completo y búsqueda semántica con tus propias incrustaciones o incrustaciones automatizadas.
Instale MongoDB Search y búsqueda vectorial con Docker
Nota
Para incorporarse más rápidamente a una implementación destinada a la experimentación, consulta el Inicio rápido de desarrollo local de MongoDB Search y búsqueda vectorial de MongoDB.
Antes de comenzar
Importante
mongot sincroniza datos de mongod y requiere un set de réplicas de MongoDB. Una implementación autónoma de mongod no es compatible con mongot.
Antes de implementar mongot, complete los siguientes pasos:
Instala Docker y Docker Compose.
Si deseas que MongoDB búsqueda vectorial genere automáticamente incrustaciones para los datos de texto de tu colección, crea claves API de servicio de endpoint. Para obtener más información, consulta incrustación automatizada.
Importante
La incrustación automatizada está en modo de vista previa. La funcionalidad y la documentación correspondiente pueden cambiar en cualquier momento durante el periodo de Vista previa. Para obtener más información, consulte Funcionalidades de vista previa.
Si aún no tiene las claves, cree las claves de la API del servicio endpoint desde la Interfaz de Usuario de Atlas. Recomendamos que cree dos claves, una para generar incrustaciones en el momento del índice y otra para generar incrustaciones en el momento de la query, a partir de dos proyectos de Atlas.
Nota
El endpoint de tu proveedor para generar embeddings depende de si creas las claves API desde la interfaz de usuario de Atlas o directamente desde Voyage IA.
Procedimiento
Advertencia
Este procedimiento proporciona una configuración por defecto mínima e insegura que no habilita el control de acceso. Los pasos crean una implementación destinada únicamente a la experimentación local.
Antes de exponer estos contenedores y utilizar su configuración en producción, consulte los siguientes recursos para proteger su implementación:
Descargue la imagen de Docker de MongoDB.
Para descargar la imagen de Docker de MongoDB, ejecute el siguiente comando:
docker pull mongodb/mongodb-community-server:latest
Nota
Debes tener un mínimo de MongoDB 8.2+ para usar MongoDB Search con una implementación local. Para obtener más información, consulta Compatibilidad de MongoDB Search.
Para obtener detalles adicionales sobre la instalación de MongoDB con Docker, consulte Instalar MongoDB Community con Docker.
Cree un archivo de contraseña de usuario de sincronizar mongot.
Create a password file for mongot to connect to mongod. Select your operating system and run the command:
Replace <mongot_password> with your password and run the following command to create a file called passwordFile in your current directory:
echo -n "<mongot_password>" > passwordFile chmod 400 passwordFile
Replace <mongot_password> with your password and run the following command to create a file called passwordFile inside a Docker-managed named volume called mongot-secrets. You reference this volume instead of a host path when you start mongot in a later step.
docker volume create mongot-secrets docker run --rm -v mongot-secrets:/secrets busybox sh -c "echo -n '<mongot_password>' > /secrets/passwordFile && chmod 400 /secrets/passwordFile"
On Windows, a bind-mounted host file does not preserve Unix permission bits inside a Linux container. Docker Desktop's file-sharing layer overrides the permissions that you set on the NTFS side, and Windows has no native chmod equivalent. The throwaway container in the preceding command sets the permissions correctly on the Linux side.
Nota
La opción -n evita una nueva línea al final.
Cree su archivo de configuración de mongod.
Para crear el archivo de configuración, se debe guardar el siguiente código en mongod.conf o en la ubicación de preferencia.
# MongoDB Configuration File # Network configuration net: port: 27017 bindIpAll: true # Equivalent to --bind_ip_all # Replica set configuration replication: replSetName: rs0 # Search configuration parameters setParameter: # Server parameters to advise mongod of mongot availability for search index management and querying searchIndexManagementHostAndPort: mongot-community.search-community:27028 mongotHost: mongot-community.search-community:27028 skipAuthenticationToSearchIndexManagementServer: false useGrpcForSearch: true searchTLSMode: disabled
Inicie su mongod.
Para comenzar el mongod:
Reemplace
</path/to/data/db>con la ruta al directorio local para el volumen montado.Reemplace
</path/to/mongod.conf>con la ruta al archivo de configuración que creó anteriormente.On Windows, replace the backslash (
\) at the end of each line with the line continuation character for your shell. Command Prompt uses a caret (^), and PowerShell uses a backtick.
docker run --rm \ --name mongod \ -v </path/to/mongod.conf>:/etc/mongod.conf:ro \ -v </path/to/data/db>:/data/db \ -p 27017:27017 \ --network search-community \ mongodb/mongodb-community-server:latest \ --config /etc/mongod.conf \ --replSetMember=mongod.search-community:27017
Cree un usuario para el proceso mongot en su implementación de MongoDB.
mongot debe poder conectarse a la implementación de MongoDB a través de un usuario con el rol de searchCoordinator.
Ejecute el siguiente comando para conectarse a la base de datos admin:
use admin
Para crear un usuario con el rol searchCoordinator:
Reemplace
<mongot_username>por un nombre de usuario para su usuariomongot.Se debe reemplazar
<mongot_password>con la contraseña que se especificó en elpasswordFileen el paso 4.Ejecuta el siguiente comando:
db.createUser( { user: "<mongot_username>", pwd: "<mongot_password>", roles: [ "searchCoordinator" ] } )
Para obtener más información sobre la creación de usuarios, consulte Crear un usuario en implementaciones autogestionadas.
Especifique sus opciones de configuración de búsqueda.
Puedes configurar mongot con un archivo de configuración YAML. Debes especificar el nombre de usuario que especificaste en el paso anterior como el syncSource.replicaSet.scramAuth.username. También debes especificar el passwordFile que creaste en el paso anterior como el syncSource.replicaSet.scramAuth.passwordFile.
Para obtener más información sobre las opciones de configuración de mongot, consulte Opciones de mongot.
Por ejemplo, se puede adaptar la configuración al entorno local como se muestra a continuación:
# mongot.conf syncSource: replicaSet: hostAndPort: "mongod.search-community:27017" scramAuth: username: "mongotUser" passwordFile: "/passwordFile" authSource: "admin" tls: enabled: false replicationReader: readPreference: "secondaryPreferred" storage: dataPath: "/data/mongot" server: grpc: address: "mongot-community.search-community:27028" tls: mode: "disabled" metrics: enabled: true address: "mongot-community.search-community:9946" healthCheck: address: "mongot-community.search-community:8080" logging: verbosity: INFO
Guarde su archivo en mongot.config o en la ubicación que prefiera.
Ambos contenedores se ejecutan en la misma red Docker search-community.
Inicie el proceso de mongot.
To start the Search in Community binary (mongot), select your operating system and run the command:
Reemplace
</path/to/data/mongot>con la ruta al directorio local del volumen montado para almacenar los datos demongot.Reemplaza
</path/to/mongot.conf>por la ruta hacia el archivo de configuraciónmongotque creaste en el paso anterior.Replace
</path/to/passwordFile>with the path to the password file that you created.
docker run --rm \ --name mongot-community \ -v </path/to/data/mongot>:/data/mongot \ -v </path/to/mongot.conf>:/mongot-community/config.default.yml \ -v </path/to/passwordFile>:/passwordFile:ro \ --network search-community \ -p 8080:8080 \ -p 9946:9946 \ mongodb/mongodb-community-search:latest
Reemplace
</path/to/data/mongot>con la ruta al directorio local del volumen montado para almacenar los datos demongot.Reemplaza
</path/to/mongot.conf>por la ruta hacia el archivo de configuraciónmongotque creaste en el paso anterior.Set
syncSource.replicaSet.scramAuth.passwordFilein yourmongotconfiguration file to"/secrets/passwordFile"instead of"/passwordFile". The command mounts themongot-secretsvolume that you created in step 4 at/secretsin the container.In PowerShell, replace each caret (
^) with a backtick. The command uses the caret (^) line continuation character for Command Prompt.
docker run --rm ^ --name mongot-community ^ -v </path/to/data/mongot>:/data/mongot ^ -v </path/to/mongot.conf>:/mongot-community/config.default.yml ^ -v mongot-secrets:/secrets:ro ^ --network search-community ^ -p 8080:8080 ^ -p 9946:9946 ^ mongodb/mongodb-community-search:latest
Este comando:
Monta el volumen.
Monta un archivo de configuración desde un volumen local.
Especifica el rango de puertos.
Expone el puerto de métricas.
Inicia el contenedor en la red Docker
search-communitycon un contenedor llamadomongot-community.
Verifica el estado del proceso mongot.
Para verificar, envíe una solicitud utilizando un cliente HTTP o curl al /health endpoint. Por ejemplo, envíe una solicitud curl similar a la siguiente solicitud de muestra:
curl localhost:8080/health
El endpoint devuelve uno de los siguientes en la respuesta:
SERVING, si el procesomongotse está ejecutandomongotes posible que no sirva queries, ya que no verifica el estado de los índices, que deben estar en estadoReadypara servir queries.NOT_SERVING, si el procesomongotno está en ejecución
Para obtener más información, consulta Verificar la conexión de mongot.
Desinstale MongoDB Search y MongoDB búsqueda vectorial con Docker
Para remover completamente MongoDB Search y MongoDB Vector Search de un sistema, remueva la imagen del contenedor, los archivos de configuración y cualquier directorio de datos o registros. La siguiente sección le guía a través de los pasos necesarios.
Descarta al usuario mongot.
Para descartar el usuario mongot, ejecute los siguientes comandos, reemplazando <mongot_username> con el nombre de usuario que creó para mongot:
use admin db.dropUser("<mongot_username>")
Para obtener más detalles, consulte db.dropUser().