
Raptor вводит новый подход к поисковым языковым моделям, построив рекурсивную структуру дерева из документов. Это позволяет получить более эффективное и контекстное поиск информации в крупных текстах, устраняя общие ограничения в традиционных языковых моделях.
Для получения подробных методологий и реализаций см. В оригинальной статье:
Перед использованием Raptor убедитесь, что Python 3.8+ установлен. Клонировать репозиторий Raptor и установить необходимые зависимости:
git clone https://github.com/parthsarthi03/raptor.git
cd raptor
pip install -r requirements.txtЧтобы начать с Raptor, выполните следующие шаги:
Сначала установите свой ключ API OpenAI и инициализируйте конфигурацию 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 ()Добавьте свои текстовые документы в Raptor для индексации:
with open ( 'sample.txt' , 'r' ) as file :
text = file . read ()
RA . add_documents ( text )Теперь вы можете использовать Raptor для ответа на вопросы на основе индексированных документов:
question = "How did Cinderella reach her happy ending?"
answer = RA . answer_question ( question = question )
print ( "Answer: " , answer )Сохраните построенное дерево до указанного пути:
SAVE_PATH = "demo/cinderella"
RA . save ( SAVE_PATH )Загрузите сохраненное дерево обратно в Raptor:
RA = RetrievalAugmentation ( tree = SAVE_PATH )
answer = RA . answer_question ( question = question )Raptor предназначен для того, чтобы быть гибким и позволяет интегрировать любые модели для суммирования, ответа вопросам (QA) и встраивания генерации. Вот как расширить Raptor с помощью ваших собственных моделей:
Если вы хотите использовать другую языковую модель для суммирования, вы можете сделать это, расширив класс BaseSummarizationModel . Реализуйте метод summarize для интеграции вашей пользовательской логики суммирования:
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 Для пользовательских моделей QA расширяйте класс BaseQAModel и реализуйте метод answer_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 Чтобы использовать другую модель встраивания, расширить класс BaseEmbeddingModel . Реализуйте метод create_embedding , который должен вернуть векторное представление входного текста:
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 После реализации ваших пользовательских моделей интегрируйте их с 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 ) Ознакомьтесь с demo.ipynb для примеров того, как указать свои собственные модели суммирования/QA, такие как Llama/Mistral/Gemma, и встраивание моделей, таких как Sbert, для использования с Raptor.
Примечание: появляются больше примеров и способов настройки Raptor. Расширенное использование и дополнительные функции будут предоставлены в документации и обновлениях репозитория.
Raptor-это проект с открытым исходным кодом, и взносы приветствуются. Если вы исправляете ошибки, добавляете новые функции или улучшаете документацию, ваша помощь ценится.
Raptor выпускается по лицензии MIT. См. Файл лицензии в репозитории для полной информации.
Если Raptor помогает в вашем исследовании, укажите это следующим образом:
@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 }
}Следите за обновлениями, чтобы узнать больше примеров, руководств по конфигурации и обновлений.