주요 콘텐츠로 건너뛰기
버전: 1.0.0

일반 텍스트 파일의 지식창고

이 섹션에서는 일반 텍스트 파일에서 벡터 컬렉션 스냅샷을 만드는 방법에 대해 설명합니다. 이 스냅샷 파일을 Gaia 노드에서 지식창고로 로드할 수 있습니다.

텍스트 파일은 빈 줄로 여러 개의 청크로 분할됩니다. 예시를 참조하세요. 각 청크는 벡터로 바뀌고, 검색될 때 검색되면 LLM에 대한 프롬프트 컨텍스트에 추가됩니다.

전제 조건

크로스 플랫폼 LLM 런타임인 WasmEdge 런타임을 설치합니다.

curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install_v2.sh | bash -s

임베딩 모델을 다운로드하세요.

curl -LO https://huggingface.co/gaianet/Nomic-embed-text-v1.5-Embedding-GGUF/resolve/main/nomic-embed-text-v1.5.f16.gguf

임베딩 모델은 문장을 벡터로 변환하는 특수한 종류의 LLM입니다. 그런 다음 벡터를 벡터 데이터베이스에 저장하고 나중에 검색할 수 있습니다. 문장이 지식 도메인을 나타내는 텍스트 본문에서 나온 경우, 해당 벡터 데이터베이스가 RAG 지식 기반이 됩니다.

벡터 데이터베이스 시작

기본적으로 Qdrant를 벡터 데이터베이스로 사용합니다. 지식 스냅샷으로 Gaia 노드를 시작하여 지식 스냅샷으로 Gaia 노드를 시작하면 됩니다.

참고

또는 Docker를 사용하여 Qdrant 서버를 시작할 수 있습니다. 다음 명령은 백그라운드에서 서버를 시작합니다.

mkdir qdrant_storage
mkdir qdrant_snapshots

nohup docker run -d -p 6333:6333 -p 6334:6334 \.
-v $(pwd)/qdrant_storage:/qdrant/storage:z \.
-v $(pwd)/qdrant_snapshots:/qdrant/snapshots:z \ \.
qdrant/qdrant

벡터 컬렉션 스냅샷 만들기

기본 컬렉션이 있는 경우 삭제합니다.

curl -X DELETE 'http://localhost:6333/collections/default'

default라는 새 컬렉션을 만듭니다. 768 차원인 것을 알 수 있습니다. 이것이 임베딩 모델의 출력 벡터 크기입니다. nomic-embed-text-v1.5. 다른 임베딩 모델을 사용하는 경우 해당 모델에 맞는 치수를 사용해야 합니다.

curl -X PUT 'http://localhost:6333/collections/default' \
-H 'Content-Type: application/json' \
--data-raw '{
"vectors": {
"size": 768,
"distance": "Cosine",
"on_disk": true
}
}'

문서를 청크하고 임베딩을 생성하는 프로그램을 다운로드하세요.

curl -LO https://github.com/GaiaNet-AI/embedding-tools/raw/main/paragraph_embed/paragraph_embed.wasm

빈 줄을 기준으로 문서를 덩어리로 나눕니다. 따라서 반드시 이런 방식으로 소스 문서를 준비해야 합니다. 즉, 빈 줄이 있는 200단어 내외의 섹션으로 문서를 분할해야 합니다. 다른 청크 전략을 사용해야 하는 경우 여기에서 Rust 소스 코드를 확인하고 수정할 수 있습니다.

그리고 paragraph_embed.wasm 프로그램은 목록에 빈 줄이 있어도 코드 목록을 나누지 않습니다.

그런 다음 컬렉션 이름, 벡터 차원 및 소스 문서를 전달하여 프로그램을 실행할 수 있습니다. 로컬 컴퓨터에서 Qdrant가 실행 중인지 확인합니다. 모델은 임베딩이라는 이름으로 미리 로드됩니다. 그런 다음 wasm 앱은 임베딩 모델을 사용하여 paris_chunks.txt에서 768차원 벡터를 생성하고 이를 기본 컬렉션에 저장합니다.

curl -LO https://huggingface.co/datasets/gaianet/paris/raw/main/paris_chunks.txt

wasmedge --dir ... \
--nn-preload embedding:GGML:AUTO:nomic-embed-text-v1.5.f16.gguf \.
paragraph_embed.wasm 임베딩 기본값 768 paris_chunks.txt -c 8192

옵션

다음 옵션을 프로그램에 전달할 수 있습니다.

  • 사용 -m 또는 --최대_컨텍스트_길이 를 사용하여 CLI 인수에 컨텍스트 길이를 지정할 수 있습니다. 즉, 컨텍스트 길이를 초과하는 각 텍스트 세그먼트에 대해 잘라내고 경고합니다.
  • 사용 -s 또는 --start_vector_id 를 사용하여 CLI 인수에 시작 벡터 ID를 지정할 수 있습니다. 이렇게 하면 동일한 벡터 컬렉션의 여러 문서에서 이 앱을 여러 번 실행할 수 있습니다.
  • 사용 -c 또는 --ctx_size 를 사용하여 입력의 컨텍스트 크기를 지정합니다. 기본값은 512입니다.

예: 위의 예와 같지만 색인 42부터 시작하는 기존 컬렉션의 끝에 런던 가이드를 추가하는 것입니다.

wasmedge --dir ... \
--nn-preload embedding:GGML:AUTO:nomic-embed-text-v1.5.f16.gguf \.
paragraph_embed.wasm 임베딩 기본값 768 london.txt -c 8192 -s 42

벡터 스냅샷 만들기

컬렉션의 스냅샷을 생성하여 공유할 수 있고 다른 Qdrant 데이터베이스에 로드할 수 있습니다. 스냅샷 파일은 다음에서 찾을 수 있습니다. 큐드랜트_스냅샷 디렉토리 또는 ~/가이아넷/큐드론/스냅샷 디렉토리에 저장합니다.

curl -X POST 'http://localhost:6333/collections/default/snapshots'

또한 스냅샷 파일을 압축하는 것이 좋습니다.

tar czvf 내.스냅샷.tar.gz 내.스냅샷

마지막으로 내.스냅샷.tar.gz 파일을 허깅페이스에 추가하여 가이아 노드에서 다운로드하여 사용할 수 있습니다..

다음 단계

즐거운 시간 보내세요!