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

소스/요약 쌍의 지식창고

이 섹션에서는 긴 형식의 텍스트 문서를 최적으로 검색할 수 있는 벡터 컬렉션 스냅샷을 만드는 방법에 대해 설명합니다. 이 접근 방식은 CSV 파일에 두 개의 텍스트 열을 만드는 것입니다.

  • 첫 번째 열은 책 장이나 마크다운 섹션과 같은 지식창고의 긴 형식의 소스 텍스트입니다.
  • 긴 형식의 소스 텍스트는 검색하기 어렵습니다. 두 번째 열은 소스 텍스트의 "검색 친화적인" 요약입니다. 첫 번째 열의 소스 텍스트로 답변할 수 있는 질문 목록이 포함될 수 있습니다.

각 벡터가 요약 텍스트(두 번째 열)에서 계산되지만 해당 벡터의 검색된 소스 텍스트는 첫 번째 열에서 가져오는 벡터 스냅샷을 만들 것입니다. 그런 다음 이 스냅샷 파일을 Gaia 노드에서 지식창고로 로드할 수 있습니다.

일련의 문서 또는 챕터에서 적절한 형식의 CSV 파일을 작성하는 간단한 Python 스크립트가 있습니다. 어떻게 작동하는지 알아보세요.

전제 조건

크로스 플랫폼 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
}
}'

CSV 파일에서 임베딩을 생성하는 프로그램을 다운로드합니다.

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

여기에서 Rust 소스 코드를 확인하고 다른 CSV 레이아웃을 사용해야 하는 경우 수정할 수 있습니다.

그런 다음 컬렉션 이름, 벡터 차원, CSV 문서를 전달하여 프로그램을 실행할 수 있습니다. 컬렉션의 --ctx_size 옵션은 임베딩 모델의 컨텍스트 창 크기(이 경우 8192토큰)와 일치하여 긴 텍스트 섹션을 처리할 수 있습니다. 로컬 컴퓨터에서 Qdrant가 실행 중인지 확인합니다. 모델은 임베딩이라는 이름으로 미리 로드됩니다. 그런 다음 wasm 앱은 임베딩 모델을 사용하여 다음에서 768차원 벡터를 생성합니다. paris.csv 를 클릭하고 기본 컬렉션에 저장합니다.

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

wasmedge --dir ... \
--nn-preload embedding:GGML:AUTO:nomic-embed-text-v1.5.f16.gguf \.
csv_embed.wasm 임베딩 기본값 768 paris.csv --ctx_size 8192

옵션

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

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

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

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

벡터 스냅샷 만들기

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

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

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

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

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

다음 단계