
Raptor introduit une nouvelle approche de la récupération des modèles de langage augmenté en construisant une structure d'arborescence récursive à partir de documents. Cela permet une récupération d'informations plus efficace et plus éveillée à travers de grands textes, abordant les limitations communes dans les modèles de langue traditionnels.
Pour des méthodologies et des implémentations détaillées, reportez-vous à l'article d'origine:
Avant d'utiliser Raptor, assurez-vous que Python 3.8+ est installé. Clone le référentiel Raptor et installez les dépendances nécessaires:
git clone https://github.com/parthsarthi03/raptor.git
cd raptor
pip install -r requirements.txtPour commencer avec Raptor, suivez ces étapes:
Tout d'abord, définissez votre touche API OpenAI et initialisez la configuration 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 ()Ajoutez vos documents texte à Raptor pour l'indexation:
with open ( 'sample.txt' , 'r' ) as file :
text = file . read ()
RA . add_documents ( text )Vous pouvez désormais utiliser Raptor pour répondre aux questions en fonction des documents indexés:
question = "How did Cinderella reach her happy ending?"
answer = RA . answer_question ( question = question )
print ( "Answer: " , answer )Enregistrez l'arbre construit sur un chemin spécifié:
SAVE_PATH = "demo/cinderella"
RA . save ( SAVE_PATH )Chargez l'arbre enregistré dans Raptor:
RA = RetrievalAugmentation ( tree = SAVE_PATH )
answer = RA . answer_question ( question = question )Raptor est conçu pour être flexible et vous permet d'intégrer tous les modèles de résumé, de réponses aux questions (QA) et de génération d'intégration. Voici comment étendre Raptor avec vos propres modèles:
Si vous souhaitez utiliser un modèle linguistique différent pour le résumé, vous pouvez le faire en étendant la classe BaseSummarizationModel . Implémentez la méthode summarize pour intégrer votre logique de résumé personnalisée:
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 Pour les modèles QA personnalisés, étendez la classe BaseQAModel et implémentez la méthode answer_question . Cette méthode doit renvoyer la meilleure réponse trouvée par votre modèle étant donné un contexte et une question:
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 Pour utiliser un modèle d'incorporation différent, étendez la classe BaseEmbeddingModel . Implémentez la méthode create_embedding , qui devrait renvoyer une représentation vectorielle du texte d'entrée:
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 Après implémentation de vos modèles personnalisés, intégrez-les à Raptor comme suit:
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 ) Consultez demo.ipynb pour des exemples sur la façon de spécifier vos propres modèles de résumé / QA, tels que Llama / Mistral / Gemma, et des modèles d'intégration tels que SBERT, pour une utilisation avec Raptor.
Remarque: Plus d'exemples et moyens de configurer Raptor sont à venir. Une utilisation avancée et des fonctionnalités supplémentaires seront fournies dans les mises à jour de la documentation et du référentiel.
Raptor est un projet open-source et les contributions sont les bienvenues. Que vous fixiez des bogues, de l'ajout de nouvelles fonctionnalités ou de l'amélioration de la documentation, votre aide est appréciée.
Raptor est libéré sous la licence du MIT. Voir le fichier de licence dans le référentiel pour plus de détails.
Si Raptor assiste dans vos recherches, veuillez le citer comme suit:
@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 }
}Restez à l'écoute pour plus d'exemples, de guides de configuration et de mises à jour.