Skip to content

text embedder (encaje léxico)

Open In Colab

El Módulo text-embedder (Encaje Léxico)

🇺🇸 English version of this document

El módulo text-embedder (encaje léxico) toma como entrada uno o varios fragmentos de texto, convierte cada uno en un vector (una representación matemática del fragmento que conserva su significado) y devuelve un arreglo que contiene todos los vectores generados. Estos arreglos vectoriales pueden luego ser ingresados en una base de datos vectorial para habilitar búsqueda semántica (también conocida como búsqueda vectorial).

Mucho se ha escrito sobre las incrustaciones de vectores (vector embeddings). Si quieres aprender más al respecto, puedes (por ejemplo) arrancar con este artículo en Medium o este video en YouTube.

Esta introducción al módulo text-embedder se divide en las siguientes secciones:

Entradas y Salidas del Modulo text-embedder

El módulo text-embedder (encaje léxico) recibe entradas en formato JSON. Las entradas JSON deben respetar este formato.

El archivo JSON de entrada también puede incluir, acompañando a cada fragmento, un par clave-valor en el que la clave es el string "line numbers" y el valor es una lista de int que indica cada número de línea en el documento original sobre el que yacía ese fragmento de texto. Esto te puede ayudar a identificar qué línea del documento original está incrustada en cada vector.

El módulo text-embedder devuelve un arreglo vectorial en un archivo NPY.

Para ver un ejemplo del formato que debe seguir un archivo de entrada al módulo text-embedder, detalla el contenido de la salida JSON reproducida después del siguiente código. Así se debe estructurar un archivo de entrada para este módulo (ten en cuenta que la clave line numbers es opcional):

# detalla el contenido de un archivo de entrada válido para este módulo
test_file = data_dir + "input/1984_fragmentos.json"
with open(test_file, "r") as file:
    print(json.dumps(json.load(file), indent=2))
[
  {
    "snippet": "It was a bright cold day in April, and the clocks were striking thirteen.",
    "line_numbers": [
      1
    ]
  },
  {
    "snippet": "Winston Smith, his chin nuzzled into his breast in an effort to escape the\nvile wind, slipped quickly through the glass doors of Victory Mansions,\nthough not quickly enough to prevent a swirl of gritty dust from entering\nalong with him.",
    "line_numbers": [
      2,
      3,
      4,
      5
    ]
  }
]

Modelos Disponibles en el Modulo text-embedder

Puedes activar cualquiera de los siguientes modelos al usar el módulo text-embedder:

Usa el argumento modules en el método process para determinar qué modelo quieres activo al procesar archivos a través del módulo text-embedder.

Parametros de los Modelos en el Modulo text-embedder

Todos los modelos del módulo text-embedder son parametrizables. Toman un parámetro:

  • quantize (bool) - Si su valor es True, reduce el número de puntos decimales en los vectores. Esto brinda mejoras en velocidad y memoria a cambio de cierta pérdida en precisión (esta es una explicación muy simplificada de lo que es la cuantificación vectorial). Su valor predeterminado es True.

Por ende, al elegir qué modelo usar a través del argumento modules del método process, params puede incluir un valor para quantize. Por ejemplo:

# ejemplo de selección de modelo para el módulo text-embedder en el método process
modules={'text-embedder': {"model": "all-mpnet-base-v2",
                           "params": {"quantize": False}}}

Un Pipeline de Modulo Unico para el Modulo text-embedder

Haz clic aquí para detallar un ejemplo de un pipeline de módulo único con un módulo text-embedder.

Ten en cuenta que toda salida de este pipeline será en formato NPY, el cual no es legible para humanos (es un arreglo de vectores).

Mas Informacion sobre el Modulo text-embedder: IO y Conectabilidad

Haz clic aquí para visitar documentación Krixik titulada Métodos de Conveniencia (¡y Más!). Allí encontrarás dos herramientas con las que puedes aprender más sobre el módulo text-embedder: