
Raptor apresenta uma nova abordagem para modelos de linguagem de recuperação de recuperação, construindo uma estrutura de árvore recursiva a partir de documentos. Isso permite a recuperação de informações mais eficientes e com reconhecimento de contexto em textos grandes, abordando limitações comuns nos modelos de idiomas tradicionais.
Para metodologias e implementações detalhadas, consulte o artigo original:
Antes de usar o Raptor, verifique se o Python 3.8+ está instalado. Clone o repositório Raptor e instale as dependências necessárias:
git clone https://github.com/parthsarthi03/raptor.git
cd raptor
pip install -r requirements.txtPara começar com o Raptor, siga estas etapas:
Primeiro, defina sua chave da API do OpenAI e inicialize a configuração do 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 ()Adicione seus documentos de texto ao Raptor para indexação:
with open ( 'sample.txt' , 'r' ) as file :
text = file . read ()
RA . add_documents ( text )Agora você pode usar o Raptor para responder a perguntas com base nos documentos indexados:
question = "How did Cinderella reach her happy ending?"
answer = RA . answer_question ( question = question )
print ( "Answer: " , answer )Salve a árvore construída em um caminho especificado:
SAVE_PATH = "demo/cinderella"
RA . save ( SAVE_PATH )Carregue a árvore salva de volta ao raptor:
RA = RetrievalAugmentation ( tree = SAVE_PATH )
answer = RA . answer_question ( question = question )O Raptor foi projetado para ser flexível e permite que você integre quaisquer modelos para resumo, resposta a perguntas (controle de qualidade) e geração de incorporação. Aqui está como estender o Raptor com seus próprios modelos:
Se você deseja usar um modelo de idioma diferente para resumo, pode fazê -lo estendendo a classe BaseSummarizationModel . Implemente o método summarize para integrar sua lógica de resumo personalizado:
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 controle de qualidade personalizados, estenda a classe BaseQAModel e implemente o método answer_question . Este método deve retornar a melhor resposta encontrada pelo seu modelo, dado um contexto e uma pergunta:
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 usar um modelo de incorporação diferente, estenda a classe BaseEmbeddingModel . Implementar o método create_embedding , que deve retornar uma representação vetorial do 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 Depois de implementar seus modelos personalizados, integre -os ao Raptor da seguinte forma:
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 ) Confira demo.ipynb para obter exemplos sobre como especificar seus próprios modelos de resumo/controle de qualidade, como lhama/Mistral/Gemma, e modelos de incorporação como Sbert, para uso com Raptor.
Nota: Mais exemplos e maneiras de configurar o Raptor estão próximos. Uso avançado e recursos adicionais serão fornecidos nas atualizações de documentação e repositório.
O Raptor é um projeto de código aberto e as contribuições são bem-vindas. Esteja você corrigindo bugs, adicionando novos recursos ou melhorando a documentação, sua ajuda é apreciada.
Raptor é liberado sob a licença do MIT. Consulte o arquivo de licença no repositório para obter detalhes completos.
Se o Raptor auxiliar em sua pesquisa, cite -a da seguinte forma:
@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 }
}Fique atento para mais exemplos, guias de configuração e atualizações.