Tentang Proyek
Update terkini di blog kami
Contoh
Penglihatan
Fitur
Memulai
Penggunaan dan konsep
Peta jalan
Berkontribusi
Lisensi
Saat bekerja dengan alat berbasis Python lainnya, rasa frustrasi muncul seputar kinerja, stabilitas, dan kemudahan penggunaan. Maka lahirlah Swiftide. Sasaran Swiftide adalah menawarkan perpustakaan generasi tambahan pengambilan yang lengkap, cepat, mudah digunakan, andal, dan mudah diperluas.
Bagian dari proyek bosun.ai. Platform mendatang untuk peningkatan kode otonom.
Kami <3 umpan balik: ide proyek, saran, dan keluhan sangat diterima. Jangan ragu untuk membuka masalah atau menghubungi kami di perselisihan.
Titik awal yang bagus adalah readme ini, swiftide.rs, folder contoh, blog kami di bosun.ai, dan tutorial mendalam di swiftide-tutorial.
Peringatan
Swiftide sedang dalam pengembangan besar-besaran dan mungkin mengalami perubahan besar saat kami berupaya menuju versi 1.0. Dokumentasi di sini mungkin tidak memenuhi semua fitur, dan meskipun sudah dilakukan upaya kami, dokumentasi tersebut mungkin sedikit ketinggalan jaman. Harapkan bug. Kami menyarankan untuk selalu mengawasi dokumentasi github dan api kami. Jika Anda menemukan masalah atau memiliki masukan apa pun, kami ingin mendengar pendapat Anda mengenai suatu masalah.
(kembali ke atas)
Evaluasi jaringan pipa Swiftide dengan Ragas (15-09-2024)
Rilis - Swiftide 0.12 (13-09-2024)
Intel kode lokal dengan Ollama, FastEmbed, dan OpenTelemetry (04-09-2024
Rilis - Swiftide 0.9 (2024-09-02)
Bawa trafo Anda sendiri (13-08-2024)
Rilis - Swiftide 0.8 (2024-08-12)
Rilis - Swiftide 0.7 (28-07-2024)
Membangun saluran penjawab pertanyaan kode (13-07-2024)
Rilis - Swiftide 0.6 (2024-07-12)
Rilis - Swiftide 0.5 (2024-07-1)
(kembali ke atas)
Mengindeks proyek kode lokal, membaginya menjadi bagian-bagian yang lebih kecil, memperkaya node dengan metadata, dan menyimpannya di Qdrant:
indexing :: Pipeline :: from_loader ( FileLoader :: new ( "." ) . with_extensions ( & [ "rs" ] ) )
. with_default_llm_client ( openai_client . clone ( ) )
. filter_cached ( Redis :: try_from_url (
redis_url ,
"swiftide-examples" ,
) ? )
. then_chunk ( ChunkCode :: try_for_language_and_chunk_size (
"rust" ,
10 .. 2048 ,
) ? )
. then ( MetadataQACode :: default ( ) )
. then ( move |node| my_own_thing ( node ) )
. then_in_batch ( Embed :: new ( openai_client . clone ( ) ) )
. then_store_with (
Qdrant :: builder ( )
. batch_size ( 50 )
. vector_size ( 1536 )
. build ( ) ? ,
)
. run ( )
. await ? ;
Mengkueri contoh tentang cara menggunakan alur kueri:
query :: Pipeline :: default ( )
. then_transform_query ( GenerateSubquestions :: from_client (
openai_client . clone ( ) ,
) )
. then_transform_query ( Embed :: from_client (
openai_client . clone ( ) ,
) )
. then_retrieve ( qdrant . clone ( ) )
. then_answer ( Simple :: from_client ( openai_client . clone ( ) ) )
. query ( "How can I use the query pipeline in Swiftide?" )
. await ? ;
Anda dapat menemukan lebih banyak contoh di /examples
(kembali ke atas)
Tujuan kami adalah menciptakan platform yang cepat dan dapat diperluas untuk Retrieval Augmented Generation guna memajukan pengembangan aplikasi AI otomatis, dengan api yang mudah digunakan dan diperluas.
(kembali ke atas)
tracing
didukung untuk logging dan penelusuran, lihat /examples dan peti tracing
untuk informasi lebih lanjut.Fitur | Detail |
---|---|
Penyedia Model Bahasa Besar yang didukung | OpenAI (dan Azure) - Semua model dan penyematan Batuan Dasar AWS - Antropis dan Titan Groq - Semua model Ollama - Semua model |
Memuat data | File Menggores Fluvio Parket Saluran pipa dan aliran lainnya |
Transformer dan pembuatan metadata | Hasilkan Pertanyaan dan penjawab untuk teks dan kode (Hyde) Ringkasan, judul dan pertanyaan melalui LLM Ekstrak definisi dan referensi dengan pengasuh pohon |
Memisahkan dan memotong | Penurunan harga Teks (pemisah_teks) Kode (dengan pengasuh pohon) |
Penyimpanan | Qdrant ulang LanceDB |
Alur kueri | Kemiripan dan pencarian hibrid, transformasi kueri dan respons, serta evaluasi |
(kembali ke atas)
Pastikan Anda telah memasang rantai alat karat. Rustup Apakah pendekatan yang disarankan.
Untuk menggunakan OpenAI, diperlukan kunci API. Perhatikan bahwa secara default async_openai
menggunakan variabel lingkungan OPENAI_API_KEY
.
Integrasi lain mungkin memiliki persyaratannya sendiri.
Siapkan proyek Rust baru
Tambahkan Swiftide
cargo add swiftide
Aktifkan fitur integrasi yang ingin Anda gunakan di Cargo.toml
Anda
Tulis saluran pipa (lihat contoh dan dokumentasi kami)
(kembali ke atas)
Sebelum membuat streaming, Anda perlu mengaktifkan dan mengonfigurasi integrasi apa pun yang diperlukan. Lihat /contoh.
Kami memiliki banyak contoh, silakan merujuk ke /examples dan Dokumentasi
Catatan
Tidak ada integrasi yang diaktifkan secara default karena beberapa integrasi memiliki banyak kode. Kami menyarankan Anda memilih integrasi yang Anda perlukan. Berdasarkan konvensi, bendera memiliki nama yang sama dengan integrasi yang diwakilinya.
Aliran pengindeksan dimulai dengan Loader yang memancarkan Node. Misalnya, dengan Fileloader, setiap file adalah Node.js.
Anda kemudian dapat mengiris dan memotong, menambah, dan memfilter node. Setiap jenis langkah dalam pipeline memerlukan sifat yang berbeda. Ini memungkinkan ekstensi.
Node memiliki jalur, potongan, dan metadata. Saat ini metadata disalin saat chunking dan selalu disematkan saat menggunakan transformator OpenAIEmbed.
(impl Loader)
titik awal aliran, membuat dan memancarkan Node(impl NodeCache)
memfilter node yang di-cache(impl Transformer)
mengubah node dan meletakkannya di aliran(impl BatchTransformer)
mengubah beberapa node dan menempatkannya di aliran(impl ChunkerTransformer)
mengubah satu node dan memancarkan banyak node(impl Storage)
menyimpan node di backend penyimpanan, ini dapat dirangkai Selain itu, beberapa trafo generik diimplementasikan. Mereka menggunakan implementasi SimplePrompt
dan EmbedModel
untuk melakukan tugasnya.
Peringatan
Karena kinerjanya, pemotongan sebelum menambahkan metadata memberikan kesalahan batas kecepatan pada OpenAI dengan sangat cepat, terutama dengan model yang lebih cepat seperti 3,5-turbo. Menyadari.
Aliran kueri dimulai dengan strategi pencarian. Dalam alur kueri, Query
melewati beberapa tahap. Transformer dan retriever bekerja sama untuk memasukkan konteks yang tepat ke dalam sebuah prompt, sebelum menghasilkan jawaban. Transformers dan Retriever beroperasi pada tahapan Query yang berbeda melalui mesin negara generik. Selain itu, strategi pencariannya bersifat umum dan Retriever perlu menerapkannya secara khusus untuk setiap strategi.
Kedengarannya banyak tapi, tl&dr; pipa kueri diketik secara lengkap dan kuat .
Selain itu, alur kueri juga dapat dievaluasi. Yaitu oleh Ragas.
Mirip dengan jalur pengindeksan, setiap langkah diatur oleh Sifat-sifat sederhana dan penutupan juga menerapkan sifat-sifat ini.
(kembali ke atas)
Lihat masalah yang masih terbuka untuk mengetahui daftar lengkap fitur yang diusulkan (dan masalah umum).
(kembali ke atas)
Jika Anda ingin lebih terlibat dengan Swiftide, memiliki pertanyaan atau ingin mengobrol, Anda dapat menemukan kami di discord.
(kembali ke atas)
Swiftide masih dalam tahap awal dan kami menyadari bahwa kami kekurangan fitur untuk komunitas luas. Kontribusi sangat diharapkan. ?
Jika Anda memiliki ide bagus, harap fork repo dan buat permintaan tarik. Anda juga dapat membuka masalah dengan tag "peningkatan". Jangan lupa untuk memberi proyek ini bintang! Terima kasih lagi!
Jika Anda hanya ingin berkontribusi (diberkati!), lihat terbitan kami atau bergabunglah dengan kami di Discord.
git checkout -b feature/AmazingFeature
)git commit -m 'feat: Add some AmazingFeature'
)git push origin feature/AmazingFeature
)Lihat KONTRIBUSI untuk informasi lebih lanjut
(kembali ke atas)
Didistribusikan di bawah Lisensi MIT. Lihat LICENSE
untuk informasi lebih lanjut.
(kembali ke atas)