Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.

Usa MongoDB Search y búsqueda vectorial

Si instalaste correctamente el recurso MongoDBSearch, puedes crear índices de MongoDB Search e índices de búsqueda vectorial como mdb-user y ejecutar consultas de MongoDB Search y Vector Search utilizando los índices. Esta página describe cómo cargar datos de muestra, crear índices de Búsqueda de MongoDB y Búsqueda Vectorial para los datos y ejecutar consultas de Búsqueda de MongoDB y Búsqueda Vectorial sobre los datos.

Para utilizar MongoDB Search y la búsqueda vectorial, debes tener lo siguiente:

1
  1. Para configurar las variables de entorno para su uso en los pasos posteriores de este procedimiento, copie lo siguiente, establezca los valores de las variables de entorno y luego cargue las variables de entorno:

    # The env vars here are all commented out because this snippets module# is reusable across different MongoDB deployments and all the necessary variables# should be already defined there. # set it to the context name of the k8s cluster#export K8S_CTX="<local cluster context>"# the following namespace will be used to deploy mongodb tools pod#export MDB_NS="mongodb" # regular user performing restore and search queries on sample mflix database# the user should be able to restore database using mongorestore#export MDB_USER_PASSWORD="mdb-user-password-CHANGE-ME" # name of MongoDB or MongoDBCommunity resource in case it's deployed in the same cluster# user only for the connection string in MDB_CONNECTION_STRING env var below#export MDB_RESOURCE_NAME="mdbc-rs" # TLS-related resources used by the snippets in this module#export MDB_TLS_CA_SECRET_NAME="${MDB_RESOURCE_NAME}-ca"#export MDB_TLS_CA_CONFIGMAP="${MDB_RESOURCE_NAME}-ca-configmap"#export MDB_TLS_SERVER_CERT_SECRET_NAME="${MDB_RESOURCE_NAME}-tls"#export MDB_SEARCH_TLS_SECRET_NAME="${MDB_RESOURCE_NAME}-search-tls" # default connection string if MongoDB database is deployed using the operator#export MDB_CONNECTION_STRING="mongodb://mdb-user:${MDB_USER_PASSWORD}@${MDB_RESOURCE_NAME}-0.${MDB_RESOURCE_NAME}-svc.${MDB_NS}.svc.cluster.local:27017/?replicaSet=${MDB_RESOURCE_NAME}"# To enable TLS for the shared snippets, append driver options directly to the connection string, for example:#export MDB_CONNECTION_STRING="mongodb://mdb-user:${MDB_USER_PASSWORD}@${MDB_RESOURCE_NAME}-0.${MDB_RESOURCE_NAME}-svc.${MDB_NS}.svc.cluster.local:27017/?replicaSet=${MDB_RESOURCE_NAME}&tls=true&tlsCAFile=/tls/ca.crt"
  2. Para conectarse utilizando la cadena de conexión habilitada para TLS, como se muestra (en la línea 27) en el archivo env_variables.sh, descargue el certificado público de CA para el servicio MongoDBSearch de modo que el cliente mongosh pueda hacer referencia a él.

2

Implementar un pod llamado mongodb-tools-pod para ejecutar herramientas cliente de MongoDB como mongosh y mongorestore desde dentro del clúster de Kubernetes. Ejecutar un pod dentro del clúster simplifica la conectividad con MongoDB sin necesidad de exponer la base de datos externamente.

El siguiente comando implementa un pod llamado mongodb-tools-pod que ejecuta una imagen del servidor Community de MongoDB. El pod se mantiene en funcionamiento con un comando sleep infinity para permitirte usar kubectl exec para ejecutar herramientas del cliente MongoDB.

kubectl apply -n "${MDB_NS}" --context "${K8S_CTX}" -f - <<EOFapiVersion: v1kind: Podmetadata: name: mongodb-tools-pod labels: app: mongodb-toolsspec: containers: - name: mongodb-tools image: mongodb/mongodb-community-server:${MDB_VERSION%-ent}-ubi8 command: ["/bin/bash", "-c"] args: ["sleep infinity"] volumeMounts: - name: mongo-ca mountPath: /tls readOnly: true restartPolicy: Never volumes: - name: mongo-ca configMap: name: ${MDB_TLS_CA_CONFIGMAP:-"${MDB_RESOURCE_NAME}-ca-configmap"} optional: true items: - key: ca.crt path: ca.crtEOF echo "Waiting for the mongodb-tools to be ready..."kubectl --context "${K8S_CTX}" -n "${MDB_NS}" wait --for=condition=Ready pod/mongodb-tools-pod --timeout=60s
3

Importa la base de datos sample_mflix, que contiene las siguientes colecciones:

Nombre de colección
Descripción

comments

Contiene comentarios asociados con películas específicas.

embedded_movies

Contiene detalles sobre películas en los géneros Western, Action y Fantasy de la colección movies con los siguientes campos adicionales:

  • plot_embedding_voyage_3_large - Contiene embeddings de 2048d creados a partir del campo plot utilizando el modelo de embedding voyage-3-large de Voyage IA y convertidos a binData para un almacenamiento y recuperación eficientes.

  • plot_embedding - Contiene incrustaciones 1536d creadas a partir del campo plot utilizando el modelo de incrustación text-embedding-ada-002 de OpenAI y convertido a binData para un almacenamiento y recuperación eficiente.

movies

Contiene información sobre películas, incluidos el año de lanzamiento, el director y las revisiones.

sessions

Campo de metadatos. Contiene los JSON Web Tokens de los usuarios.

theaters

Contiene las ubicaciones de los cines.

users

Contiene información de usuario.

El siguiente comando descarga el conjunto de datos de ejemplo y usa mongorestore para cargar los datos en la base de datos sample_mflix de tu implementación de MongoDB, conectándose como el mdb-user.

# Restore sample_mflix database. Provide any TLS parameters directly within MDB_CONNECTION_STRING.kubectl exec -n "${MDB_NS}" --context "${K8S_CTX}" \ mongodb-tools-pod -- env MDB_CONNECTION_STRING="${MDB_CONNECTION_STRING}" /bin/bash -eu -c "$(cat <<'EOF'echo "Downloading sample database archive..."curl -fSL https://atlas-education.s3.amazonaws.com/sample_mflix.archive -o /tmp/sample_mflix.archive echo "Restoring sample database"mongorestore \ --archive=/tmp/sample_mflix.archive \ --verbose=1 \ --drop \ --nsInclude 'sample_mflix.*' \ --uri="${MDB_CONNECTION_STRING}"EOF)"
4

Puedes crear un índice de MongoDB Search o un índice de búsqueda vectorial. Debes crear un índice de MongoDB Search para ejecutar consultas $search y $searchMeta y un índice de búsqueda vectorial para ejecutar consultas $vectorSearch.

  • MongoDB Search proporciona definiciones de índices flexibles que admiten mapeos de campos dinámicos y estáticos, diversos analizadores (estándar, específicos de lenguaje, personalizados) y funcionalidades como sinónimos y búsqueda facetada. Para obtener más información, consulta Define tu índice.

  • La búsqueda vectorial ofrece una definición de índice simple que permite consultar incrustaciones vectoriales en tus datos basándose en la similitud semántica, utilizando el algoritmo de búsqueda ANN y ENN. Para obtener más información, consulte Definir índice de búsqueda vectorial.

  1. Copia, pega y ejecuta el siguiente comando en tu terminal para crear un índice de MongoDB Search o un índice de búsqueda vectorial.

    El comando utiliza kubectl exec para ejecutar mongosh en el mongodb-tools-pod. Se conecta al método sample_mflix db.<collection>.createSearchIndex() para crear un índice.

    El siguiente comando crea un índice de búsqueda de MongoDB denominado default con configuraciones dinámicas en la colección movies. El mapeo dinámico indexa automáticamente todos los tipos de campos indexables dinámicamente.

    kubectl exec --context "${K8S_CTX}" -n "${MDB_NS}" mongodb-tools-pod -- \ mongosh --quiet "${MDB_CONNECTION_STRING}" \ --eval "use sample_mflix" \ --eval 'db.movies.createSearchIndex("default", { mappings: { dynamic: true } });'
  2. Espere a que se complete la creación del índice.

    La creación de índices es un proceso asíncrono. Ejecuta el siguiente script para esperar 60 segundos hasta que se complete la creación del índice.

    # Currently it's not possible to check the status of search indexes, we need to just waitecho "Sleeping to wait for search indexes to be created"sleep 60

    Como alternativa, ejecuta el siguiente comando para recuperar la lista de índices de la colección.

    kubectl exec --context "${K8S_CTX}" -n "${MDB_NS}" mongodb-tools-pod -- \ mongosh --quiet "${MDB_CONNECTION_STRING}" \ --eval "use sample_mflix" \ --eval 'db.runCommand({"listSearchIndexes": "movies"});'
5

Una vez que la creación del índice sea exitosa, puede ejecutar queries de MongoDB Search o búsqueda vectorial utilizando el índice. También puede combinar MongoDB Search con búsqueda vectorial. Para obtener más información sobre cómo ejecutar queries de MongoDB Search, consulte Definir su query. Para obtener más información sobre las queries de búsqueda vectorial, consulte Ejecutar queries ANN y ENN de búsqueda vectorial.

El siguiente script define los criterios de query de la pipeline de agregación y utiliza el comando kubectl exec para cargar mongosh y ejecutar la query.

La siguiente query busca en el campo plot argumentos de películas que contengan el término baseball. Excluye películas en los géneros comedy y romance.

mdb_script=$(cat <<'EOF'use sample_mflix;db.movies.aggregate([ { $search: { "compound": { "must": [ { "text": { "query": "baseball", "path": "plot" } }], "mustNot": [ { "text": { "query": ["Comedy", "Romance"], "path": "genres" } } ] }, "sort": { "released": -1 } } }, { $limit: 3 }, { $project: { "_id": 0, "title": 1, "plot": 1, "genres": 1, "released": 1 } }]);EOF) kubectl exec --context "${K8S_CTX}" -n "${MDB_NS}" \ mongodb-tools-pod -- /bin/bash -eu -c "$(cat <<EOFecho '${mdb_script}' > /tmp/mdb_script.jsmongosh --quiet "${MDB_CONNECTION_STRING}" < /tmp/mdb_script.jsEOF)"
mdbc-rs [primary] test> switched to db sample_mflixmdbc-rs [primary] sample_mflix> ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... [ { plot: 'A sports agent stages an unconventional recruitment strategy to get talented Indian cricket players to play Major League Baseball.', genres: [ 'Biography', 'Drama', 'Sport' ], title: 'Million Dollar Arm', released: ISODate('2014-05-16T00:00:00.000Z') }, { plot: 'A Taiwanese high school baseball team travels to Japan in 1931 to compete in a national tournament.', genres: [ 'Biography', 'Drama', 'History' ], title: 'Kano', released: ISODate('2014-02-27T00:00:00.000Z') }, { plot: "12-year-old Josh is a mixed race boy and a promising baseball player. He is abused by his mother's boyfriend Byrd, and neglected by his mother Debbie. He forges his own path in life when ...", genres: [ 'Drama' ], title: 'Calloused Hands', released: ISODate('2013-03-03T00:00:00.000Z') }]mdbc-rs [primary] sample_mflix>

Para obtener más información sobre cómo crear índices y ejecutar consultas de búsqueda, consulta:

Califique esta página