embedchain ist ein Framework zum einfachen Erstellen von LLM-basierten Bots über beliebige Datensätze. embedchainjs ist eine Javascript-Version von embedchain. Wenn Sie eine Python-Version wünschen, schauen Sie sich embedchain-python an
Vereinbaren Sie eine Feedback-Sitzung mit Taranjeet, dem Gründer, um etwaige Probleme zu besprechen, Feedback zu geben oder Verbesserungen zu erkunden.
Es abstrahiert den gesamten Prozess des Ladens des Datensatzes, seiner Aufteilung, der Erstellung von Einbettungen und der anschließenden Speicherung in der Vektordatenbank.
Sie können einen einzelnen oder mehrere Datensätze mit den Funktionen .add
und .addLocal
hinzufügen und dann mit der Funktion .query
eine Antwort aus den hinzugefügten Datensätzen finden.
Wenn Sie einen Naval Ravikant-Bot erstellen möchten, der zwei seiner Blogbeiträge sowie ein von Ihnen bereitgestelltes Frage- und Antwortpaar enthält, müssen Sie lediglich die Links zu den Blogbeiträgen hinzufügen und das QnA-Paar und die Einbettungskette erstellen einen Bot für dich.
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
Derzeit ist es nur mit OpenAI 3.X kompatibel, nicht mit der neuesten Version 4.X. Bitte stellen Sie sicher, dass Sie die richtige Version verwenden, sonst wird der ChromaDB
Fehler TypeError: OpenAIApi.Configuration is not a constructor
angezeigt
Stellen Sie sicher, dass das Paket dotenv installiert ist und Ihr OPENAI_API_KEY
in einer Datei namens .env
im Stammordner gespeichert ist. Sie können dotenv per installieren
npm install dotenv
Laden Sie Docker herunter und installieren Sie es auf Ihrem Gerät, indem Sie diesen Link besuchen. Sie benötigen dies, um die Chroma-Vektordatenbank auf Ihrem Computer auszuführen.
Führen Sie die folgenden Befehle aus, um den Chroma-Container in Docker einzurichten
git clone https://github.com/chroma-core/chroma.git
cd chroma
docker-compose up -d --build
Wir verwenden das Einbettungsmodell von OpenAI, um Einbettungen für Chunks zu erstellen, und die ChatGPT-API als LLM, um anhand der relevanten Dokumente Antworten zu erhalten. Stellen Sie sicher, dass Sie über ein OpenAI-Konto und einen API-Schlüssel verfügen. Wenn Sie keinen API-Schlüssel haben, können Sie über diesen Link einen erstellen.
Sobald Sie den API-Schlüssel haben, legen Sie ihn in einer Umgebungsvariablen namens OPENAI_API_KEY
fest
// Set this inside your .env file
OPENAI_API_KEY = "sk-xxxx" ;
const dotenv = require ( "dotenv" ) ;
dotenv . config ( ) ;
App
Klasse aus Embedchain und verwenden Sie die Funktion .add
um einen beliebigen Datensatz hinzuzufügen..query
verwenden, um die Antwort auf jede Anfrage zu erhalten. 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" ) ;
Wir unterstützen folgende Formate:
Um eine beliebige PDF-Datei hinzuzufügen, verwenden Sie data_type als pdf_file
. Z.B:
await app . add ( "pdf_file" , "a_valid_url_where_pdf_file_can_be_accessed" ) ;
Um eine beliebige Webseite hinzuzufügen, verwenden Sie data_type als web_page
. Z.B:
await app . add ( "web_page" , "a_valid_web_page_url" ) ;
Um Ihr eigenes QnA-Paar bereitzustellen, verwenden Sie data_type als qna_pair
und geben Sie ein Tupel ein. Z.B:
await app . addLocal ( "qna_pair" , [ "Question" , "Answer" ] ) ;
Bevor Sie wertvolle Token verbrauchen, sollten Sie sicherstellen, dass die von Ihnen vorgenommene Einbettung funktioniert und das richtige Dokument aus der Datenbank erhält.
Hierzu können Sie die dryRun
-Methode verwenden.
Fügen Sie dem obigen Beispiel folgend Folgendes zu Ihrem Skript hinzu:
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 :
'' '
Es wurde bestätigt, dass die Einbettung wie erwartet funktioniert. Es gibt das richtige Dokument zurück, auch wenn die Frage etwas anders gestellt wird. Es wurden keine Prompt-Token verbraucht.
Der Probelauf verbraucht weiterhin Token zum Einbetten Ihrer Abfrage, macht aber nur etwa 1/15 der Eingabeaufforderung aus.
Um einen Chatbot über einen beliebigen Datensatz zu erstellen, müssen die folgenden Schritte ausgeführt werden
Immer wenn ein Benutzer eine Frage stellt, findet der folgende Prozess die Antwort auf die Frage
Der Prozess des Ladens des Datensatzes und der anschließenden Abfrage umfasst mehrere Schritte und jeder Schritt hat seine eigenen Nuancen.
Diese Fragen mögen für manche trivial sein, aber für viele von uns sind Recherche, Experimente und Zeit erforderlich, um die richtigen Antworten zu finden.
embedchain ist ein Framework, das all diese Nuancen berücksichtigt und eine einfache Schnittstelle zum Erstellen von Bots über jeden Datensatz bietet.
In der ersten Version machen wir es für jeden einfacher, einen Chatbot für jeden Datensatz in weniger als einer Minute einzurichten und zum Laufen zu bringen. Sie müssen lediglich eine App-Instanz erstellen, die Datensätze mit der Funktion .add
hinzufügen und dann die Funktion .query
verwenden, um die entsprechende Antwort zu erhalten.
embedchain basiert auf dem folgenden Stack:
Wenn Sie dieses Repository nutzen, denken Sie bitte darüber nach, es zu zitieren mit:
@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}},
}