Run this notebook in Google Colab
كل خطوة أدناه على هيئة دفتر قابل للتنفيذ، مع تشغيل النظرة العامة داخل الصفحة. لا شيء لتثبيته.
كيف يعمل
خمس نقاط نهاية، لكلٍّ منها مهمة واحدة:
الاسترجاع هنا بسيط عن قصد: متجهات في قائمة Python، وتشابه جيب التمام في حلقة. هذا هو القدر الصحيح من الآليات لبضع عشرات من المصادر، ويُبقي الأجزاء المتحركة ظاهرة. حين تفوق ذلك، يغطي بناء روبوت RAG خاص الخطَّ نفسه بقاعدة بيانات متجهات حقيقية ومَرحلة إعادة ترتيب.
الإعداد
اعتماديّة واحدة، ومفتاح من صفحة إعدادات API.notebook.py وابدأ بالاستيرادات والتهيئة. القائمتان في الأسفل هما كامل حالة الدفتر: sources يسجّل ما أضفتَه، وchunks يحمل القطع القابلة للبحث.
HOSTS اسم كل مُقدِّم بصوت. كلا الصوتين ينتميان إلى tts-xai-v1، وهذا مهم: الأصوات تخص النماذج، وإرسال صوت من عائلة إلى نموذج من عائلة أخرى هو أشيع خطأ أول مع نقطة نهاية الصوت.
اختيار نموذج لن يتقادم
ترميز نموذج دردشة داخل مشروع يضمن تقادُم المشروع. تنشر Venice أيَّ نموذج يحمل حاليًا كل دور عبر/models/traits، فيمكنك طلب الافتراضي الحالي بدل تسمية نموذج بعينه.
most_intelligent يمنحك نموذجًا أقوى للتلخيص الكثيف بالاستدلال، وdefault_reasoning يمنحك واحدًا يفكّر بشكل مكشوف. راجع النماذج للقائمة الكاملة.
إضافة المصادر
المصدر إمّا رابط URL أو ملفٌ على القرص، ولدى Venice نقطة نهاية لكل منهما. كلاهما يُعيد نصًّا خامًا، وهذا هو المقصود: بقيّة الدفتر لا تهتم من أين جاء المصدر./augment/scrape نصَّ Markdown بدل HTML الخام، فلا حاجة لكتابة كود لتجريد القوالب. يقبل /augment/text-parser ملفات PDF وWord وExcel والنص العادي حتى 25 ميغابايت، ويُبلّغ عن عدد الرموز إلى جانب النص. يغطّي معالجة المستندات خياراته بالكامل.
التقطيع والتضمين
تضمين مستند كامل يُنتج متجهًا واحدًا هو معدَّل كل ما يقوله، وهذا أعمى من أن يسترجع ادعاءً بعينه. تقطيعه يُنتج متجهات يعني كلٌّ منها شيئًا. قسِّم على حدود الفقرات لا على عدد أحرف ثابت. القطعة التي تتوقف في منتصف جملة تُسترجع رديئًا، لأن التضمين لجزء مبتور.embed الطلبات لأن نقطة النهاية تأخذ قائمة، وطلبٌ واحد لأربع وستّين قطعة أقلّ تكلفةً في الزمن الفعلي بكثير من أربعة وستّين طلبًا. يعيد text-embedding-bge-m3 متجهًا بـ1024 بُعدًا ويتعامل جيدًا مع المصادر متعددة اللغات.
إضافة مصدر صارت الآن: اقرأ، وقسِّم، وضمِّن، وسجِّل. تُخزَّن سعة كل متجه إلى جانبه، لأنها لا تتغير أبدًا وإعادة حسابها داخل حلقة التشابه هدرٌ للجهد.
number هو ما يجعل الاستشهاد ممكنًا لاحقًا. كل قطعة تتذكر أيَّ مصدر جاءت منه، فيمكن للإجابة أن تُشير مرجعًا إليه.
استرجاع المقاطع الصحيحة
تشابه جيب التمام بين متجه السؤال وكل متجه قطعة، ثم فرزٌ، ثم أفضل k. لبضعة آلاف من القطع، يعمل هذا أسرع من الاستدعاء الشبكي الذي أنتج متجه السؤال.الإجابة مع الاستشهادات
الفرق بين إجابة مؤصَّلة وتخمين واثق يكمن كليًّا في التعليمة. تعليمتان تؤدّيان العمل: أجِب فقط من الملاحظات، وقُل ذلك حين تعجز الملاحظات. من دون الثانية سيملأ النموذج الفراغ بهدوء من الذاكرة، وهذا هو نمط الفشل الذي تحاول تفاديه بالتصميم. ترقيم الملاحظات في التعليمة يمنح النموذج مفردات استشهاد. يكتب[2]، فتستطيع أنت أن تُرجع ذلك إلى مصدر.
كتابة نصّ النظرة العامة
هنا يتوقف الدفتر عن أن يكون صندوق بحث. الملخّص شيء تقرأه؛ والنظرة العامة شيء تستمع إليه، وكلٌّ منهما يريد نثرًا مختلفًا. الحوار يعمل بشكل أفضل في الصوت لأن تبادل الأدوار يضبط الإيقاع نيابةً عنك، وسؤالٌ من أحد المُقدِّمَين طريقة طبيعية لتقديم الفكرة التالية. ثلاثة قيود تهم، وكلها تأتي من الصوت لا من النص:- لا Markdown ولا روابط URL. نموذج الكلام يقرأ
https://docs.venice.aiحرفًا حرفًا. - اهجِ الاختصارات. T E E في المرة الأولى، لا tee.
- نوِّع طول المقاطع. المقاطع المتساوية تبدو وكأن شخصَين يقرآن قائمة أحدهما للآخر.
enum على speaker يعني أن كل مقطع يُقابل صوتًا لديك.
spread عيّنة من القطع عبر المجموعة كلها بدل الاسترجاع بالتشابه. أخذ كل قطعة رقم n خامٌ لكنه يعمل جيدًا: فهو يبلغ نهاية المستندات الطويلة، وأخذ الاثنتَي عشرة الأولى ما كان ليصل إليها.
عامِل عدد المقاطع كتلميح لا كتعليمة. طلبُ ستة عشر أنتج هنا ما بين ستة عشر وثمانية وعشرين، بحسب ما لدى المصادر لتقوله. إن احتجتَ سقفًا صارمًا، فاقتطع turns قبل التصيير بدل مجادلة التعليمة.
تصيير صوتَين إلى مسار واحد
يصبح كل مقطع طلب كلام واحدًا، والصوت يُختار بحسب من يتكلم.pool.map ترتيب المُدخلات، فتعود المقاطع بالترتيب الذي كُتبت به مهما بلغ أيُّها الأول. أربعة عاملين سقفٌ متعمَّد لا حدٌّ أقصى: تزامُنٌ أكبر سيبدأ بإعادة رموز 429 على الطبقات الأدنى، والمهمة أصلًا يهيمن عليها أطول مقطع منفرد.
تشغيله
اجعله لك
المصادر هي اللعبة كلها. كل ما يأتي بعد ذلك محدود بما أدخلتَه. الصفحات المستخرَجة تجلب معها شريط التنقل والتذييل، وهذا غير ضارٍّ للإجابة لكنه يظهر في النظرة العامة على شكل مُقدِّم يناقش بجدٍّ فهرس توثيق. إن حدث ذلك، فأسقط القطع تحت عتبة طول أو رشِّح الأثاث الواضح قبل التضمين. استبدل الأصوات.HOSTS هو مُدخلان في قاموس. يشحن tts-xai-v1 ستة وعشرين صوتًا، وللعائلات الأخرى أصواتها؛ GET /models?type=tts يُدرج voices لكل نموذج. صوتان يتباينان بوضوح أسهل في المتابعة من صوتَين مختلفَين فقط.
استنسِخ صوتك. يحوّل استنساخ الأصوات عيّنة قصيرة إلى مقبض صوت يمكنك إسقاطه مباشرة في HOSTS.
أضف مشاركًا ثالثًا. لا شيء في المسار يفترض متحدثَين إلا enum المُخطَّط. إضافة مُحاوِر يطرح الأسئلة فقط تُغيّر الإحساس تغييرًا كبيرًا.
احفظ النص. كتابة turns إلى ملف JSON إلى جوار الصوت تكلّف سطرَين وتوفّر إعادة تصيير كلَّ مرة تريد فيها تعديل جملة واحدة.
إلى أين تذهب بعد ذلك
روبوت RAG خاص
خط الاسترجاع نفسه بقاعدة بيانات متجهات حقيقية وإعادة ترتيب.
إجابات موثّقة مع بحث الويب
اعثر على المصادر تلقائيًا بدل تسميتها بنفسك.
النص إلى كلام
مرجع لنقطة نهاية الكلام وأصواتها والبثّ.
معالجة المستندات
كل ما يقبله محلِّل النصوص وما يعيده.