embedchain は、任意のデータセット上で LLM を利用したボットを簡単に作成するためのフレームワークです。 embedchainjs は embedchain の Javascript バージョンです。 Python バージョンが必要な場合は、embedchain-python をチェックしてください。
創設者である Taranjeet とのフィードバック セッションをスケジュールして、問題について話し合ったり、フィードバックを提供したり、改善点を検討したりできます。
データセットのロード、チャンク化、埋め込みの作成、ベクトル データベースへの保存というプロセス全体を抽象化します。
.add
関数と.addLocal
関数を使用して単一または複数のデータセットを追加し、 .query
関数を使用して追加されたデータセットから答えを見つけることができます。
Naval Ravikant の 2 つのブログ投稿と、指定した質問と回答のペアを含むボットを作成したい場合は、ブログ投稿へのリンクを追加するだけで、QnA ペアと埋め込みチェーンによってあなたのためのボット。
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 ベクトル データベースを実行するために必要になります。
次のコマンドを実行して、Docker で Chroma コンテナをセットアップします。
git clone https://github.com/chroma-core/chroma.git
cd chroma
docker-compose up -d --build
OpenAI の埋め込みモデルを使用してチャンクの埋め込みを作成し、ChatGPT API を 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
クラスをインポートし、 .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" ) ;
Web ページを追加するには、 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 は、これらすべてのニュアンスを処理し、任意のデータセット上でボットを作成するためのシンプルなインターフェイスを提供するフレームワークです。
最初のリリースでは、誰でも簡単に、あらゆるデータセット上でチャットボットを 1 分以内にセットアップして実行できるようにしています。必要なのは、アプリ インスタンスを作成し、 .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}},
}