يعد embedchain إطارًا لإنشاء روبوتات مدعومة من LLM بسهولة عبر أي مجموعة بيانات. embedchainjs هو إصدار جافا سكريبت من embedchain. إذا كنت تريد إصدارًا بيثون، فراجع embedchain-python
حدد موعدًا لجلسة تعليقات مع تارانجيت، المؤسس، لمناقشة أي مشكلات أو تقديم تعليقات أو استكشاف التحسينات.
إنه يلخص العملية الكاملة لتحميل مجموعة البيانات، وتقطيعها، وإنشاء التضمينات ثم تخزينها في قاعدة بيانات المتجهات.
يمكنك إضافة مجموعة بيانات واحدة أو متعددة باستخدام وظيفة .add
و .addLocal
ثم استخدام وظيفة .query
للعثور على إجابة من مجموعات البيانات المضافة.
إذا كنت ترغب في إنشاء روبوت Naval Ravikant الذي يحتوي على منشورين على مدونته، بالإضافة إلى زوج من الأسئلة والأجوبة الذي توفره، فكل ما عليك فعله هو إضافة الروابط إلى منشورات المدونة وسيقوم زوج QnA وembedchain بإنشاء بوت لك.
const dotenv = require ( "dotenv" ) ;
dotenv . config ( ) ;
const { App } = require ( "embedchain" ) ;
//Run the app commands inside an async function only
async function testApp ( ) {
const navalChatBot = await App ( ) ;
// Embed Online Resources
await navalChatBot . add ( "web_page" , "https://nav.al/feedback" ) ;
await navalChatBot . add ( "web_page" , "https://nav.al/agi" ) ;
await navalChatBot . add (
"pdf_file" ,
"https://navalmanack.s3.amazonaws.com/Eric-Jorgenson_The-Almanack-of-Naval-Ravikant_Final.pdf"
) ;
// Embed Local Resources
await navalChatBot . addLocal ( "qna_pair" , [
"Who is Naval Ravikant?" ,
"Naval Ravikant is an Indian-American entrepreneur and investor." ,
] ) ;
const result = await navalChatBot . query (
"What unique capacity does Naval argue humans possess when it comes to understanding explanations or concepts?"
) ;
console . log ( result ) ;
// answer: Naval argues that humans possess the unique capacity to understand explanations or concepts to the maximum extent possible in this physical reality.
}
testApp ( ) ;
npm
npm install embedchain && npm install -S openai@^3.3.0
حاليًا، إنه متوافق فقط مع openai 3.X، وليس الإصدار الأحدث 4.X. يرجى التأكد من استخدام الإصدار الصحيح، وإلا فسوف ترى خطأ ChromaDB
TypeError: OpenAIApi.Configuration is not a constructor
تأكد من تثبيت حزمة dotenv ومن OPENAI_API_KEY
في ملف يسمى .env
في المجلد الجذر. يمكنك تثبيت dotenv عن طريق
npm install dotenv
قم بتنزيل Docker وتثبيته على جهازك من خلال زيارة هذا الرابط. ستحتاج إلى هذا لتشغيل قاعدة بيانات Chroma Vector على جهازك.
قم بتشغيل الأوامر التالية لإعداد حاوية Chroma في Docker
git clone https://github.com/chroma-core/chroma.git
cd chroma
docker-compose up -d --build
نحن نستخدم نموذج التضمين الخاص بـ OpenAI لإنشاء عمليات تضمين للقطع وواجهة برمجة تطبيقات ChatGPT باعتبارها LLM للحصول على إجابة في ضوء المستندات ذات الصلة. تأكد من أن لديك حساب OpenAI ومفتاح API. إذا لم يكن لديك مفتاح API، فيمكنك إنشاء واحد عن طريق زيارة هذا الرابط.
بمجرد حصولك على مفتاح API، قم بتعيينه في متغير بيئة يسمى OPENAI_API_KEY
// Set this inside your .env file
OPENAI_API_KEY = "sk-xxxx" ;
const dotenv = require ( "dotenv" ) ;
dotenv . config ( ) ;
App
من embedchain واستخدم وظيفة .add
لإضافة أي مجموعة بيانات..query
للحصول على إجابة لأي استفسار. const dotenv = require ( "dotenv" ) ;
dotenv . config ( ) ;
const { App } = require ( "embedchain" ) ;
async function testApp ( ) {
const navalChatBot = await App ( ) ;
// Embed Online Resources
await navalChatBot . add ( "web_page" , "https://nav.al/feedback" ) ;
await navalChatBot . add ( "web_page" , "https://nav.al/agi" ) ;
await navalChatBot . add (
"pdf_file" ,
"https://navalmanack.s3.amazonaws.com/Eric-Jorgenson_The-Almanack-of-Naval-Ravikant_Final.pdf"
) ;
// Embed Local Resources
await navalChatBot . addLocal ( "qna_pair" , [
"Who is Naval Ravikant?" ,
"Naval Ravikant is an Indian-American entrepreneur and investor." ,
] ) ;
const result = await navalChatBot . query (
"What unique capacity does Naval argue humans possess when it comes to understanding explanations or concepts?"
) ;
console . log ( result ) ;
// answer: Naval argues that humans possess the unique capacity to understand explanations or concepts to the maximum extent possible in this physical reality.
}
testApp ( ) ;
const { App : EmbedChainApp } = require ( "embedchain" ) ;
// or
const { App : ECApp } = require ( "embedchain" ) ;
نحن ندعم التنسيقات التالية:
لإضافة أي ملف pdf، استخدم data_type كـ pdf_file
. على سبيل المثال:
await app . add ( "pdf_file" , "a_valid_url_where_pdf_file_can_be_accessed" ) ;
لإضافة أي صفحة ويب، استخدم data_type كـ web_page
. على سبيل المثال:
await app . add ( "web_page" , "a_valid_web_page_url" ) ;
لتوفير زوج QnA الخاص بك، استخدم data_type كـ qna_pair
وأدخل صفًا. على سبيل المثال:
await app . addLocal ( "qna_pair" , [ "Question" , "Answer" ] ) ;
قبل أن تستهلك الرموز المميزة، يجب عليك التأكد من أن التضمين الذي قمت به يعمل وأنه يتلقى المستند الصحيح من قاعدة البيانات.
لهذا يمكنك استخدام طريقة dryRun
.
باتباع المثال أعلاه، أضف هذا إلى البرنامج النصي الخاص بك:
let result = await naval_chat_bot . dryRun ( "What unique capacity does Naval argue humans possess when it comes to understanding explanations or concepts?" ) ; console . log ( result ) ;
'' '
Use the following pieces of context to answer the query at the end. If you don' t know the answer , just say that you don 't know, don' t try to make up an answer .
terms of the unseen . And I think that’s critical . That is what humans do uniquely that no other creature , no other computer , no other intelligence—biological or artificial—that we have ever encountered does . And not only do we do it uniquely , but if we were to meet an alien species that also had the power to generate these good explanations , there is no explanation that they could generate that we could not understand . We are maximally capable of understanding . There is no concept out there that is possible in this physical reality that a human being , given sufficient time and resources and
Query : What unique capacity does Naval argue humans possess when it comes to understanding explanations or concepts ?
Helpful Answer :
'' '
تم تأكيد التضمين للعمل كما هو متوقع. تقوم بإرجاع المستند الصحيح، حتى لو تم طرح السؤال بشكل مختلف قليلاً. لم يتم استهلاك أي رموز سريعة.
سيظل التشغيل التجريبي يستهلك الرموز المميزة لتضمين استعلامك، لكنه لا يتجاوز 1/15 من الموجه.
يتطلب إنشاء روبوت محادثة عبر أي مجموعة بيانات تنفيذ الخطوات التالية
عندما يسأل المستخدم أي استعلام، تحدث العملية التالية للعثور على إجابة الاستعلام
تتضمن عملية تحميل مجموعة البيانات ثم الاستعلام عنها خطوات متعددة ولكل خطوة فروق دقيقة خاصة بها.
قد تكون هذه الأسئلة تافهة بالنسبة للبعض ولكن بالنسبة للكثير منا، الأمر يحتاج إلى البحث والتجريب والوقت لمعرفة الإجابات الدقيقة.
embedchain هو إطار عمل يعتني بكل هذه الفروق الدقيقة ويوفر واجهة بسيطة لإنشاء الروبوتات على أي مجموعة بيانات.
في الإصدار الأول، قمنا بتسهيل الأمر على أي شخص للحصول على روبوت دردشة على أي مجموعة بيانات يتم إعداده وتشغيله في أقل من دقيقة. كل ما عليك فعله هو إنشاء مثيل تطبيق وإضافة مجموعات البيانات باستخدام وظيفة .add
ثم استخدام وظيفة .query
للحصول على الإجابة ذات الصلة.
تم بناء embedchain على المكدس التالي:
إذا كنت تستخدم هذا المستودع، فيرجى التفكير في الاستشهاد به مع:
@misc{embedchain,
author = {Taranjeet Singh},
title = {Embechain: Framework to easily create LLM powered bots over any dataset},
year = {2023},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/embedchain/embedchainjs}},
}