임베딩 및 텍스트 생성을 위해 라마 파일을 사용하여 문서를 색인화하고 쿼리하기 위한 매우 기본적인 대화형 CLI입니다. 인덱스는 FAISS 벡터 저장소를 기반으로 합니다. 기본 임베딩 모델은 mxbai-embed-large-v1(llamafile 링크)이고 텍스트 생성 모델은 mistral-7b-instruct-v0.2(llamafile 링크)입니다. (이는 setup.sh
편집하여 변경할 수 있습니다.)
설정:
cp .env.example .env
./setup.sh
이 스크립트는 HuggingFace에서 라마 파일을 다운로드하며 인터넷 연결에 따라 몇 분 정도 걸릴 수 있습니다.
참고: 설정 스크립트에는 pyenv가 필요합니다.
앱을 시작하려면 다음을 실행하세요.
./app.sh
앱을 실행하면 다음이 수행됩니다.
toy_data/
디렉터리에 있는 파일 콘텐츠를 벡터 저장소("인덱스")에 자동으로 수집합니다. toy_data/
디렉토리의 내용: 1.txt: Alice likes red squares.
2.txt: Bob likes blue circles.
3.txt: Chris likes blue triangles.
4.txt: David does not like green triangles.
5.txt: Mary does not like circles.
Enter query (ctrl-d to quit): [What does Alice like ? ] >
여기에서 Enter 키를 누르면 기본적으로 "Alice는 무엇을 좋아하나요?"라는 쿼리가 표시됩니다. 앱 출력은 다음과 같습니다.
=== Query ===
What does Alice like?
=== Search Results ===
0.7104 - " alice likes red squares ."
0.5229 - " bob likes blue circles ."
0.4088 - " chris likes blue triangles ."
=== Prompt ===
"You are an expert Q&A system. Answer the user's query using the provided context information.
Context information:
alice likes red squares .
bob likes blue circles .
chris likes blue triangles .
Query: What does Alice like?"
(prompt_ntokens: 55)
=== Answer ===
"
Answer: Alice likes red squares."
--------------------------------------------------------------------------------
다음은 시도해 볼 수 있는 다른 쿼리입니다.
거의 그 정도입니다.
.env
파일을 통해 대부분의 앱 설정을 변경할 수 있습니다. 기본 파일은 다음과 같아야 합니다.
EMBEDDING_MODEL_PORT=8080
GENERATION_MODEL_PORT=8081
INDEX_LOCAL_DATA_DIRS=local_data,toy_data
INDEX_TEXT_CHUNK_LEN=128
INDEX_SAVE_DIR=./index-toy
사용 가능한 모든 옵션은 settings.py를 참조하세요.
기본적으로 앱은 다음을 사용합니다.
기본적으로 앱은 INDEX_LOCAL_DATA_DIRS
에 나열된 디렉터리 local_data
및 toy_data
의 콘텐츠를 색인화하도록 구성됩니다. 현재는 .txt
파일 색인 생성만 지원합니다.
먼저 .env
에서 INDEX_SAVE_DIR
인덱스를 저장할 위치로 변경하세요. 앱은 기존 색인을 변경하거나 덮어쓰지 않으므로 .env
에서 디렉터리를 변경하거나 ./index-toy
에서 기존 색인을 삭제하세요.
데이터를 추가하는 방법에는 2가지가 있습니다.
local_data/
디렉터리에 .txt
파일을 추가합니다. .env
파일의 INDEX_LOCAL_DATA_DIRS
목록에서 toy_data/
제거할 수 있습니다. INDEX_LOCAL_DATA_DIRS
목록에 다른 디렉터리를 추가할 수도 있습니다..env
파일의 INDEX_URLS
변수에 하나 이상의 URL을 지정하여 인덱스에 웹 페이지를 추가합니다(예: INDEX_URLS=url1,url2,...
.