embedchain은 모든 데이터 세트에 대해 LLM 기반 봇을 쉽게 생성할 수 있는 프레임워크입니다. embedchainjs는 embedchain의 Javascript 버전입니다. Python 버전을 원한다면 embedchain-python을 확인하세요.
창립자인 Taranjeet과 함께 피드백 세션을 예약하여 문제를 논의하고, 피드백을 제공하거나, 개선 사항을 모색하세요.
데이터 세트를 로드하고, 청크하고, 임베딩을 생성한 다음 벡터 데이터베이스에 저장하는 전체 프로세스를 추상화합니다.
.add
및 .addLocal
함수를 사용하여 단일 또는 다중 데이터세트를 추가한 후 .query
함수를 사용하여 추가된 데이터세트에서 답변을 찾을 수 있습니다.
2개의 블로그 게시물과 귀하가 제공하는 질문 및 답변 쌍이 포함된 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
현재 최신 버전인 4.X가 아닌 openai 3.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 키를 생성할 수 있습니다.
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" ) ;
웹페이지를 추가하려면 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}},
}