zChunk: una estrategia genérica de fragmentación semántica basada en Llama-70B

Introducción general

zChunk es una novedosa estrategia de chunking desarrollada por ZeroEntropy para ofrecer una solución de chunking semántico de uso general. La estrategia se basa en el modelo Llama-70B, que optimiza el proceso de chunking de un documento solicitando la generación de trozos, lo que garantiza el mantenimiento de una elevada relación señal-ruido durante la recuperación de la información. zChunk es especialmente adecuada para aplicaciones RAG (Retrieval Augmentation Generation) que requieren una recuperación de alta precisión, y resuelve las limitaciones de los métodos tradicionales de chunking cuando se trata de documentos complejos. Con zChunk, los usuarios pueden segmentar más eficazmente los documentos en trozos significativos, mejorando así la precisión y eficacia de la recuperación de información.

Tu trabajo es actuar como un chunker.

Debe insertar el "párrafo" a lo largo de la entrada.

Su objetivo es separar el contenido en grupos semánticamente relevantes.

metodología y Limitaciones del LLM OCR: los retos del análisis sintáctico de documentos bajo el glamour Los PROMPT mencionados tienen algunos puntos en común.

zChunk:基于Llama-70B的通用语义分块策略

 

Lista de funciones

  • Algoritmo de fragmentación basado en Llama-70BGeneración de claves para la clasificación semántica mediante el modelo Llama-70B.
  • Agrupamiento de alta relación señal/ruidoOptimizar la estrategia de fragmentación para garantizar que la información recuperada tenga una elevada relación señal/ruido.
  • Múltiples estrategias de fragmentaciónAdmite varias estrategias, como la fragmentación de tamaño fijo, la fragmentación basada en la similitud de incrustación, etc.
  • ajuste de hiperparámetrosPermite a los usuarios ajustar el tamaño de los trozos y los parámetros de solapamiento en función de sus necesidades específicas.
  • código abiertoCódigo fuente abierto : Se proporciona el código fuente abierto completo y el usuario puede utilizarlo y modificarlo libremente.

 

Utilizar la ayuda

Proceso de instalación

  1. almacén de clones::
   git clone https://github.com/zeroentropy-ai/zchunk.git
cd zchunk
  1. Instalación de dependencias::
   pip install -r requirements.txt

Utilización

  1. Preparación del archivo de entrada: Guarda el documento a trocear como un archivo de texto, por ejemplo.example_input.txt.
  2. Ejecutar el script de fragmentación::
   python test.py --input example_input.txt --output example_output.txt
  1. Visualización del archivo de salidaLos resultados de la fragmentación se guardarán en el archivoexample_output.txtMedio.

Flujo detallado de funcionamiento de las funciones

  1. Elegir una estrategia de fragmentación::
    • NaiveChunk: Trozos de tamaño fijo para documentos sencillos.
    • SemanticChunkChunking basado en la similitud de incrustación para documentos que necesitan mantener la integridad semántica.
    • Algoritmo zChunkGeneración de trozos basados en sugerencias del modelo Llama-70B para documentos complejos.
  2. Ajuste de los hiperparámetros::
    • tamaño del trozo: Esto puede hacerse ajustando el parámetrochunk_sizepara establecer el tamaño de cada trozo.
    • coeficiente de solapamientomediante el parámetrooverlap_ratioEstablezca el porcentaje de solapamiento entre trozos para garantizar la continuidad de la información.
  3. Ejecución del ajuste de hiperparámetros::
   python hyperparameter_tuning.py --input example_input.txt --output tuned_output.txt

La secuencia de comandos ajustará automáticamente el tamaño de los trozos y la proporción de solapamiento en función del documento de entrada para generar resultados de fragmentación óptimos.

  1. Evaluación de los efectos de la fragmentación::
    • Evalúe los resultados de la fragmentación utilizando el script de evaluación proporcionado para garantizar la eficacia de la estrategia de fragmentación.
   python evaluate.py --input example_input.txt --output example_output.txt

ejemplo típico

Supongamos que tenemos un texto de la Constitución de EE.UU. que hay que trocear:

Texto original:

Section. 1.
All legislative Powers herein granted shall be vested in a Congress of the United States, which shall consist of a Senate and House of Representatives.
Section. 2.
The House of Representatives shall be composed of Members chosen every second Year by the People of the several States, and the Electors in each State shall have the Qualifications requisite for Electors of the most numerous Branch of the State Legislature.
No Person shall be a Representative who shall not have attained to the Age of twenty five Years, and been seven Years a Citizen of the United States, and who shall not, when elected, be an Inhabitant of that State in which he shall be chosen.

Chunking mediante el algoritmo zChunk:

  1. Seleccionar palabras clave: Seleccione un token especial (por ejemplo, "párrafo") que no se encuentre en el corpus.
  2. Insertar señales: Haz que Llama inserte el token en el mensaje del usuario.
   SYSTEM_PROMPT (简化版):
你的任务是作为一个分块器。
你应该在输入中插入“段”标记。
你的目标是将内容分成语义相关的组。
  1. Generar trozos::
   Section. 1.
All legislative Powers herein granted shall be vested in a Congress of the United States, which shall consist of a Senate and House of Representatives.段
Section. 2.
The House of Representatives shall be composed of Members chosen every second Year by the People of the several States, and the Electors in each State shall have the Qualifications requisite for Electors of the most numerous Branch of the State Legislature.段
No Person shall be a Representative who shall not have attained to the Age of twenty five Years, and been seven Years a Citizen of the United States, and who shall not, when elected, be an Inhabitant of that State in which he shall be chosen.段

De este modo, podemos segmentar los documentos en bloques semánticamente relacionados, cada uno de los cuales puede recuperarse de forma independiente, lo que mejora la relación señal-ruido y la precisión de la recuperación de información.

optimización

  • Con la inferencia local Llama, pasajes enteros pueden ser procesados de manera eficiente y logprobs pueden ser examinados para determinar la ubicación de los trozos.
  • Se tardan unos 15 minutos en procesar 450.000 caracteres, pero esto puede reducirse considerablemente si se optimiza el código.

evaluación comparativa

  • zChunk obtiene mejores puntuaciones de ratio de recuperación y ratio de señal que los métodos NaiveChunk y semantic chunking en el conjunto de datos LegalBenchConsumerContractsQA.

Con el algoritmo zChunk, podemos segmentar fácilmente cualquier tipo de documento sin depender de expresiones regulares o reglas creadas manualmente, lo que mejora la eficacia y precisión de las aplicaciones RAG.

© declaración de copyright
AiPPT

Artículos relacionados

Sin comentarios

Debe iniciar sesión para participar en los comentarios.
Acceder ahora
ninguno
Sin comentarios...