
Raptor führt einen neuartigen Ansatz zum Abrufen von Sprachmodellen ein, indem eine rekursive Baumstruktur aus Dokumenten erstellt wird. Dies ermöglicht ein effizienteres und kontextbezogenes Informationsabruf in großen Texten, wobei häufige Einschränkungen in herkömmlichen Sprachmodellen angesprochen werden.
Ausführliche Methoden und Implementierungen finden Sie im Originalpapier:
Stellen Sie vor der Verwendung von Raptor sicher, dass Python 3.8+ installiert ist. Klonen Sie das Raptor -Repository und installieren Sie die erforderlichen Abhängigkeiten:
git clone https://github.com/parthsarthi03/raptor.git
cd raptor
pip install -r requirements.txtBefolgen Sie die folgenden Schritte, um mit Raptor zu beginnen:
Stellen Sie zunächst Ihren OpenAI -API -Schlüssel ein und initialisieren Sie die Raptor -Konfiguration:
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 ()Fügen Sie Ihre Textdokumente zum Indexierung zum Raptor hinzu:
with open ( 'sample.txt' , 'r' ) as file :
text = file . read ()
RA . add_documents ( text )Sie können jetzt Raptor verwenden, um Fragen basierend auf den indizierten Dokumenten zu beantworten:
question = "How did Cinderella reach her happy ending?"
answer = RA . answer_question ( question = question )
print ( "Answer: " , answer )Speichern Sie den konstruierten Baum auf einem bestimmten Pfad:
SAVE_PATH = "demo/cinderella"
RA . save ( SAVE_PATH )Laden Sie den gespeicherten Baum wieder in Raptor:
RA = RetrievalAugmentation ( tree = SAVE_PATH )
answer = RA . answer_question ( question = question )Raptor ist so konzipiert, dass es flexibel ist und ermöglicht es Ihnen, Modelle für die Zusammenfassung, Fragen zu beantworten (QA) und die Einbettung der Erzeugung zu integrieren. Hier erfahren Sie, wie Sie Raptor mit Ihren eigenen Modellen erweitern können:
Wenn Sie ein anderes Sprachmodell für die Zusammenfassung verwenden möchten, können Sie dies tun, indem Sie die BaseSummarizationModel -Klasse erweitern. Implementieren Sie die summarize der Methode, um Ihre benutzerdefinierte Zusammenfassunglogik zu integrieren:
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 Erweitern Sie für benutzerdefinierte QA -Modelle die BaseQAModel -Klasse und implementieren Sie die answer_question -Methode. Diese Methode sollte die beste Antwort zurückgeben, die Ihr Modell mit einem Kontext und einer Frage ergibt:
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 Um ein anderes Einbettungsmodell zu verwenden, erweitern Sie die BaseEmbeddingModel -Klasse. Implementieren Sie die Methode create_embedding , die eine Vektordarstellung des Eingabetxtes zurückgeben sollte:
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 Integrieren Sie sie nach der Implementierung Ihrer benutzerdefinierten Modelle wie folgt in Raptor:
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 ) In demo.ipynb finden Sie Beispiele, wie Sie Ihre eigenen Zusammenfassungs-/QA -Modelle wie Lama/Mistral/Gemma angeben und Modelle wie Sbert einbetten, um sie mit Raptor zu verwenden.
Hinweis: Weitere Beispiele und Möglichkeiten zum Konfigurieren von Raptor finden Sie in Beendigung. Fortgeschrittene Nutzung und zusätzliche Funktionen werden in den Dokumentations- und Repository -Updates bereitgestellt.
Raptor ist ein Open-Source-Projekt, und Beiträge sind willkommen. Egal, ob Sie Fehler beheben, neue Funktionen hinzufügen oder die Dokumentation verbessern, Ihre Hilfe wird geschätzt.
Raptor wird unter der MIT -Lizenz veröffentlicht. Weitere Informationen finden Sie in der Lizenzdatei im Repository.
Wenn Raptor bei Ihrer Forschung hilft, zitieren Sie dies bitte wie folgt:
@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 }
}Weitere Beispiele, Konfigurationsführer und Updates.