
Raptor presenta un enfoque novedoso para la recuperación de modelos de lenguaje acuático mediante la construcción de una estructura de árbol recursiva a partir de documentos. Esto permite una recuperación de información más eficiente y consciente de contexto en textos grandes, abordando las limitaciones comunes en los modelos de idiomas tradicionales.
Para obtener metodologías e implementaciones detalladas, consulte el documento original:
Antes de usar Raptor, asegúrese de que esté instalado Python 3.8+. Clon el repositorio de rapaz e instale las dependencias necesarias:
git clone https://github.com/parthsarthi03/raptor.git
cd raptor
pip install -r requirements.txtPara comenzar con Raptor, siga estos pasos:
Primero, configure su tecla API OpenAI e inicialice la configuración de Raptor:
import os
os . environ [ "OPENAI_API_KEY" ] = "your-openai-api-key"
from raptor import RetrievalAugmentation
# Initialize with default configuration. For advanced configurations, check the documentation. [WIP]
RA = RetrievalAugmentation ()Agregue sus documentos de texto a Raptor para la indexación:
with open ( 'sample.txt' , 'r' ) as file :
text = file . read ()
RA . add_documents ( text )Ahora puede usar Raptor para responder preguntas basadas en los documentos indexados:
question = "How did Cinderella reach her happy ending?"
answer = RA . answer_question ( question = question )
print ( "Answer: " , answer )Guardar el árbol construido en una ruta especificada:
SAVE_PATH = "demo/cinderella"
RA . save ( SAVE_PATH )Cargue el árbol guardado en Raptor:
RA = RetrievalAugmentation ( tree = SAVE_PATH )
answer = RA . answer_question ( question = question )Raptor está diseñado para ser flexible y le permite integrar cualquier modelo para resumir, respuesta de preguntas (QA) e incrustación de generación. Aquí le mostramos cómo extender Raptor con sus propios modelos:
Si desea utilizar un modelo de idioma diferente para su resumen, puede hacerlo extendiendo la clase BaseSummarizationModel . Implemente el método summarize para integrar su lógica de resumen personalizada:
from raptor import BaseSummarizationModel
class CustomSummarizationModel ( BaseSummarizationModel ):
def __init__ ( self ):
# Initialize your model here
pass
def summarize ( self , context , max_tokens = 150 ):
# Implement your summarization logic here
# Return the summary as a string
summary = "Your summary here"
return summary Para modelos de control de calidad personalizado, extienda la clase BaseQAModel e implementa el método answer_question . Este método debe devolver la mejor respuesta encontrada por su modelo dado un contexto y una pregunta:
from raptor import BaseQAModel
class CustomQAModel ( BaseQAModel ):
def __init__ ( self ):
# Initialize your model here
pass
def answer_question ( self , context , question ):
# Implement your QA logic here
# Return the answer as a string
answer = "Your answer here"
return answer Para utilizar un modelo de incrustación diferente, extienda la clase BaseEmbeddingModel . Implemente el método create_embedding , que debería devolver una representación vectorial del texto de entrada:
from raptor import BaseEmbeddingModel
class CustomEmbeddingModel ( BaseEmbeddingModel ):
def __init__ ( self ):
# Initialize your model here
pass
def create_embedding ( self , text ):
# Implement your embedding logic here
# Return the embedding as a numpy array or a list of floats
embedding = [ 0.0 ] * embedding_dim # Replace with actual embedding logic
return embedding Después de implementar sus modelos personalizados, integre con Raptor de la siguiente manera:
from raptor import RetrievalAugmentation , RetrievalAugmentationConfig
# Initialize your custom models
custom_summarizer = CustomSummarizationModel ()
custom_qa = CustomQAModel ()
custom_embedding = CustomEmbeddingModel ()
# Create a config with your custom models
custom_config = RetrievalAugmentationConfig (
summarization_model = custom_summarizer ,
qa_model = custom_qa ,
embedding_model = custom_embedding
)
# Initialize RAPTOR with your custom config
RA = RetrievalAugmentation ( config = custom_config ) Consulte demo.ipynb para ver ejemplos sobre cómo especificar sus propios modelos de resumen/QA, como Llama/Mistral/Gemma, y los modelos de incrustación como Sbert, para usar con Raptor.
NOTA: Se presentan más ejemplos y formas de configurar Raptor. El uso avanzado y las características adicionales se proporcionarán en las actualizaciones de documentación y repositorio.
Raptor es un proyecto de código abierto, y las contribuciones son bienvenidas. Ya sea que esté arreglando errores, agregando nuevas funciones o mejorando la documentación, se agradece su ayuda.
Raptor se libera bajo la licencia MIT. Consulte el archivo de licencia en el repositorio para obtener todos los detalles.
Si Raptor ayuda en su investigación, cíquelo de la siguiente manera:
@inproceedings { sarthi2024raptor ,
title = { RAPTOR: Recursive Abstractive Processing for Tree-Organized Retrieval } ,
author = { Sarthi, Parth and Abdullah, Salman and Tuli, Aditi and Khanna, Shubh and Goldie, Anna and Manning, Christopher D. } ,
booktitle = { International Conference on Learning Representations (ICLR) } ,
year = { 2024 }
}Estén atentos para más ejemplos, guías de configuración y actualizaciones.