
Raptor memperkenalkan pendekatan baru untuk pengambilan model bahasa dengan membangun struktur pohon rekursif dari dokumen. Hal ini memungkinkan pengambilan informasi yang lebih efisien dan sadar konteks di seluruh teks besar, mengatasi keterbatasan umum dalam model bahasa tradisional.
Untuk metodologi dan implementasi terperinci, lihat kertas asli:
Sebelum menggunakan Raptor, pastikan Python 3.8+ diinstal. Kloning repositori raptor dan instal dependensi yang diperlukan:
git clone https://github.com/parthsarthi03/raptor.git
cd raptor
pip install -r requirements.txtUntuk memulai dengan Raptor, ikuti langkah -langkah ini:
Pertama, atur kunci API OpenAI Anda dan inisialisasi konfigurasi 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 ()Tambahkan dokumen teks Anda ke Raptor untuk pengindeksan:
with open ( 'sample.txt' , 'r' ) as file :
text = file . read ()
RA . add_documents ( text )Anda sekarang dapat menggunakan Raptor untuk menjawab pertanyaan berdasarkan dokumen yang diindeks:
question = "How did Cinderella reach her happy ending?"
answer = RA . answer_question ( question = question )
print ( "Answer: " , answer )Simpan pohon yang dibangun ke jalur yang ditentukan:
SAVE_PATH = "demo/cinderella"
RA . save ( SAVE_PATH )Muat pohon yang disimpan kembali ke raptor:
RA = RetrievalAugmentation ( tree = SAVE_PATH )
answer = RA . answer_question ( question = question )Raptor dirancang agar fleksibel dan memungkinkan Anda untuk mengintegrasikan model apa pun untuk peringkasan, pertanyaan-jawaban (QA), dan generasi penyematan. Berikut adalah cara memperluas raptor dengan model Anda sendiri:
Jika Anda ingin menggunakan model bahasa yang berbeda untuk meringkas, Anda dapat melakukannya dengan memperluas kelas Model BaseSummarizationModel . Menerapkan metode summarize untuk mengintegrasikan logika ringkasan khusus Anda:
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 Untuk model QA kustom, rentangkan kelas BaseQAModel dan terapkan metode answer_question . Metode ini harus mengembalikan jawaban terbaik yang ditemukan oleh model Anda yang diberi konteks dan pertanyaan:
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 Untuk menggunakan model embedding yang berbeda, memperluas kelas BaseEmbeddingModel . Implementasikan metode create_embedding , yang seharusnya mengembalikan representasi vektor dari teks input:
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 Setelah mengimplementasikan model khusus Anda, mengintegrasikannya dengan Raptor sebagai berikut:
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 ) Lihat demo.ipynb untuk contoh tentang cara menentukan model ringkasan/QA Anda sendiri, seperti llama/mistral/gemma, dan model penyematan seperti Sbert, untuk digunakan dengan raptor.
Catatan: Lebih banyak contoh dan cara untuk mengonfigurasi Raptor akan datang. Penggunaan lanjutan dan fitur tambahan akan disediakan dalam pembaruan dokumentasi dan repositori.
Raptor adalah proyek open-source, dan kontribusi dipersilakan. Apakah Anda memperbaiki bug, menambahkan fitur baru, atau meningkatkan dokumentasi, bantuan Anda dihargai.
Raptor dirilis di bawah lisensi MIT. Lihat file lisensi di repositori untuk detail lengkap.
Jika Raptor membantu dalam penelitian Anda, silakan mengutipnya sebagai berikut:
@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 }
}Nantikan lebih banyak contoh, panduan konfigurasi, dan pembaruan.