حول المشروع
آخر التحديثات على مدونتنا
مثال
رؤية
سمات
ابدء
الاستخدام والمفاهيم
خريطة الطريق
المساهمة
رخصة
أثناء العمل مع الأدوات الأخرى المستندة إلى بايثون، ظهرت الإحباطات حول الأداء والاستقرار وسهولة الاستخدام. وهكذا ولد سويفتيد. هدف Swiftide هو تقديم مكتبة الجيل المعزز للاسترجاع، والتي تتميز بالسرعة وسهولة الاستخدام والموثوقية وسهولة التوسع.
جزء من مشروع bosun.ai. منصة قادمة لتحسين التعليمات البرمجية المستقلة.
نحن <3 ردود الفعل: أفكار المشروع والاقتراحات والشكاوى هي موضع ترحيب كبير. لا تتردد في فتح قضية أو الاتصال بنا على الخلاف.
نقاط البداية الرائعة هي هذا الملف التمهيدي، وswiftide.rs، ومجلد الأمثلة، ومدونتنا على bosun.ai، والبرامج التعليمية المتعمقة على Swiftide-tutorial.
حذر
يخضع Swiftide لعملية تطوير مكثفة ويمكن أن يتضمن تغييرات جذرية أثناء عملنا على الإصدار 1.0. قد لا يرقى التوثيق هنا إلى جميع الميزات، وعلى الرغم من جهودنا فقد أصبح قديمًا بعض الشيء. توقع الأخطاء. نوصي دائمًا بمراقبة وثائق github وapi الخاصة بنا. إذا وجدت مشكلة أو كان لديك أي نوع من التعليقات، فنحن نود أن نسمع منك بشأن مشكلة ما.
(العودة إلى الأعلى)
تقييم خطوط أنابيب Swiftide مع Ragas (2024/09/15)
الإصدار - Swiftide 0.12 (2024/09/13)
معلومات الكود المحلي مع Ollama وFastEmbed وOpenTelemetry (2024-09-04
الإصدار - سويفتايد 0.9 (2024/09/02)
أحضر محولاتك الخاصة (2024-08-13)
الإصدار - سويفتايد 0.8 (12/08/2024)
الإصدار - سويفتايد 0.7 (28/07/2024)
إنشاء مسار للإجابة على أسئلة التعليمات البرمجية (2024-07-13)
الإصدار - سويفتايد 0.6 (12/07/2024)
الإصدار - Swiftide 0.5 (2024-07-1)
(العودة إلى الأعلى)
فهرسة مشروع كود محلي، وتقطيعه إلى أجزاء أصغر، وإثراء العقد بالبيانات التعريفية، والاستمرار في 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 ? ;
الاستعلام عن مثال حول كيفية استخدام مسار الاستعلام:
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 ? ;
يمكنك العثور على المزيد من الأمثلة في /examples
(العودة إلى الأعلى)
هدفنا هو إنشاء منصة سريعة وقابلة للتوسيع للجيل المعزز للاسترجاع لمواصلة تطوير تطبيقات الذكاء الاصطناعي الآلية، مع واجهة برمجة تطبيقات سهلة الاستخدام وسهلة التوسيع.
(العودة إلى الأعلى)
tracing
مدعوم للتسجيل والتتبع، راجع /الأمثلة وصندوق tracing
لمزيد من المعلومات.ميزة | تفاصيل |
---|---|
موفري نماذج اللغة الكبيرة المدعومة | OpenAI (و Azure) - جميع النماذج والتضمينات AWS Bedrock - الأنثروبي والتيتان جروك - جميع الموديلات أولاما - جميع الموديلات |
جارٍ تحميل البيانات | ملفات كشط فلوفيو باركيه خطوط الأنابيب والجداول الأخرى |
المحولات وتوليد البيانات الوصفية | إنشاء أسئلة وإجابات لكل من النص والرمز (Hyde) الملخصات والعناوين والاستفسارات عبر LLM استخرج التعريفات والمراجع مع جليسة الأشجار |
الانقسام والتقطيع | تخفيض السعر النص (text_splitter) الكود (مع جليسة الشجرة) |
تخزين | قدررانت ريديس لانس دي بي |
خط أنابيب الاستعلام | التشابه والبحث المختلط، وتحولات الاستعلام والاستجابة، والتقييم |
(العودة إلى الأعلى)
تأكد من تثبيت سلسلة أدوات الصدأ. الصدأ هو النهج الموصى به.
لاستخدام OpenAI، يلزم وجود مفتاح API. لاحظ أن async_openai
يستخدم بشكل افتراضي متغيرات البيئة OPENAI_API_KEY
.
قد يكون لعمليات التكامل الأخرى متطلباتها الخاصة.
قم بإعداد مشروع Rust جديد
أضف سويفتايد
cargo add swiftide
قم بتمكين ميزات عمليات التكامل التي ترغب في استخدامها في Cargo.toml
الخاص بك
اكتب خط أنابيب (انظر الأمثلة والوثائق لدينا)
(العودة إلى الأعلى)
قبل إنشاء مجموعات البث الخاصة بك، تحتاج إلى تمكين وتكوين أي عمليات تكامل مطلوبة. انظر /أمثلة.
لدينا الكثير من الأمثلة، يرجى الرجوع إلى /الأمثلة والوثائق
ملحوظة
لا يتم تمكين أي عمليات تكامل بشكل افتراضي لأن بعضها ثقيل التعليمات البرمجية. ننصحك باختيار عمليات التكامل التي تحتاجها. بواسطة أعلام الاتفاقية لها نفس اسم التكامل الذي تمثله.
يبدأ دفق الفهرسة بمحمل يُصدر العقد. على سبيل المثال، مع Fileloader، يكون كل ملف بمثابة Node.
يمكنك بعد ذلك تقطيع العقد وتقطيعها وزيادة حجمها وتصفيتها. يتطلب كل نوع مختلف من الخطوات في خط الأنابيب سمات مختلفة. وهذا يتيح التمديد.
تحتوي العقد على مسار وقطعة وبيانات وصفية. يتم حاليًا نسخ البيانات التعريفية عند التقطيع ويتم تضمينها دائمًا عند استخدام محول OpenAIEmbed.
(impl Loader)
نقطة بداية الدفق، وتقوم بإنشاء وإصدار العقد(impl NodeCache)
بتصفية العقد المخزنة مؤقتًا(impl Transformer)
يحول العقدة ويضعها في الدفق(impl BatchTransformer)
بتحويل العقد المتعددة ووضعها في الدفق(impl ChunkerTransformer)
بتحويل عقدة واحدة وإصدار عقد متعددة(impl Storage)
بتخزين العقد في واجهة تخزين خلفية، ويمكن ربطها بالتسلسل بالإضافة إلى ذلك، يتم تنفيذ العديد من المحولات العامة. إنهم يأخذون منفذي SimplePrompt
و EmbedModel
للقيام بأشياءهم.
تحذير
نظرًا للأداء، فإن التقسيم قبل إضافة البيانات التعريفية يعطي أخطاء في حدود المعدل على OpenAI بسرعة كبيرة، خاصة مع النماذج الأسرع مثل 3.5-turbo. كن على علم.
يبدأ دفق الاستعلام بإستراتيجية بحث. في مسار الاستعلام، يمر Query
بعدة مراحل. يعمل المحولون والمستردون معًا للحصول على السياق الصحيح في الموجه، قبل إنشاء إجابة. تعمل المحولات والمستردون على مراحل مختلفة من الاستعلام عبر جهاز حالة عام. بالإضافة إلى ذلك، تعد إستراتيجية البحث عامة عبر المسار ويحتاج المستردون إلى تنفيذها خصيصًا لكل إستراتيجية.
يبدو هذا كثيرًا، لكن، tl&dr; تمت كتابة خط أنابيب الاستعلام بشكل كامل وقوي .
بالإضافة إلى ذلك، يمكن أيضًا تقييم مسارات الاستعلام. أي بواسطة راجاس.
على غرار مسار الفهرسة، تخضع كل خطوة لسمات بسيطة وتقوم عمليات الإغلاق بتنفيذ هذه السمات أيضًا.
(العودة إلى الأعلى)
راجع المشكلات المفتوحة للحصول على قائمة كاملة بالميزات المقترحة (والمشكلات المعروفة).
(العودة إلى الأعلى)
إذا كنت ترغب في المشاركة بشكل أكبر مع Swiftide، أو لديك أسئلة أو ترغب في الدردشة، يمكنك العثور علينا على Discord.
(العودة إلى الأعلى)
لا يزال Swiftide في مرحلة مبكرة جدًا ونحن ندرك أننا نفتقر إلى الميزات المتاحة للمجتمع الأوسع. المساهمات هي موضع ترحيب كبير. ؟
إذا كانت لديك فكرة رائعة، من فضلك قم بتقسيم الريبو وإنشاء طلب سحب. يمكنك أيضًا ببساطة فتح مشكلة بالعلامة "التحسين". لا تنس أن تعطي المشروع نجمة! شكرًا لك مرة أخرى!
إذا كنت تريد المساهمة فقط (بارك الله فيك!)، راجع مشكلاتنا أو انضم إلينا على Discord.
git checkout -b feature/AmazingFeature
)git commit -m 'feat: Add some AmazingFeature'
)git push origin feature/AmazingFeature
)انظر المساهمة للمزيد
(العودة إلى الأعلى)
وزعت بموجب ترخيص معهد ماساتشوستس للتكنولوجيا. راجع LICENSE
لمزيد من المعلومات.
(العودة إلى الأعلى)