Base de conhecimentos a partir de um ficheiro de texto simples
Nesta seção, discutiremos como criar um snapshot de coleção de vetores a partir de um arquivo de texto simples. O arquivo de snapshot pode então ser carregado por um nó Gaia como sua base de conhecimento .
O arquivo de texto é segmentado em vários pedaços por linhas em branco. Veja um exemplo . Cada pedaço é transformado em um vetor e, quando recuperado, adicionado ao contexto do prompt para o LLM.
Pré-requisitos
Instale o WasmEdge Runtime, o tempo de execução LLM multiplataforma.
curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install_v2.sh | bash -s
Baixe um modelo de incorporação.
curl -LO https://huggingface.co/gaianet/Nomic-embed-text-v1.5-Embedding-GGUF/resolve/main/nomic-embed-text-v1.5.f16.gguf
O modelo de incorporação é um tipo especial de LLM que transforma sentenças em vetores. Os vetores podem então ser armazenados em um banco de dados de vetores e pesquisados posteriormente. Quando as sentenças são de um corpo de texto que representa um domínio de conhecimento, esse banco de dados de vetores se torna nossa base de conhecimento RAG.
Iniciar um banco de dados vetorial
Por padrão, usamos Qdrant como o banco de dados de vetores. Você pode iniciar uma instância Qdrant iniciando um nó Gaia com um snapshot de conhecimento .
Ou você pode iniciar um servidor Qdrant usando o Docker. O comando a seguir o inicia em segundo plano.
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
Crie o instantâneo da coleção de vetores
Exclua a coleção padrão, se ela existir.
curl -X DELETE 'http://localhost:6333/collections/default'
Crie uma nova coleção chamada default. Observe que ela tem 768 dimensões. Esse é o tamanho do vetor de saída do modelo de incorporação nomic-embed-texto-v1.5
. Se estiver usando um modelo de incorporação diferente, você deve usar uma dimensão que se ajuste ao modelo.
curl -X PUT 'http://localhost:6333/collections/default' \
-H 'Content-Type: application/json' \
--data-raw '{
"vectors": {
"size": 768,
"distance": "Cosine",
"on_disk": true
}
}'
Baixe um programa para dividir um documento e criar incorporações.
curl -LO https://github.com/GaiaNet-AI/embedding-tools/raw/main/paragraph_embed/paragraph_embed.wasm
Ele divide o documento com base em linhas vazias. Então, você DEVE preparar seu documento de origem dessa forma -- segmente o documento em seções de cerca de 200 palavras com linhas vazias. Você pode verificar o código-fonte do Rust aqui e modificá-lo se precisar usar uma estratégia de divisão diferente.
O
parágrafo_embed.wasm
o programa NÃO quebraria listagens de código mesmo se houvesse linhas vazias na listagem.
Em seguida, você pode executar o programa passando um nome de coleção, dimensão vetorial e o documento de origem. Certifique-se de que o Qdrant esteja em execução na sua máquina local. O modelo é pré-carregado sob o nome embedding. O aplicativo wasm então usa o modelo embedding para criar os vetores de 768 dimensões de paris_chunks.txt e os salva na coleção padrão.
curl -LO https://huggingface.co/datasets/gaianet/paris/raw/main/paris_chunks.txt
wasmedge --dir .:. \
--nn-preload incorporação:GGML:AUTO:nomic-embed-text-v1.5.f16.gguf \
paragraph_embed.wasm incorporação padrão 768 paris_chunks.txt -c 8192
Opções
Você pode passar as seguintes opções para o programa.
- Usando
-m
ou--comprimento_máximo_do_contexto
para especificar um comprimento de contexto no argumento CLI. Isto é para truncar e avisar para cada segmento de texto que ultrapassa o comprimento do contexto. - Usando
-s
ou--id_vetor_de_início
para especificar o ID do vetor inicial no argumento CLI. Isso nos permitirá executar este aplicativo várias vezes em vários documentos na mesma coleção de vetores. - Usando
-c
ou--ctx_tamanho
para especificar o tamanho do contexto da entrada. O padrão é 512.
Exemplo: o exemplo acima, mas para anexar o guia de Londres ao final de uma coleção existente, começando no índice 42.
wasmedge --dir .:. \
--nn-preload incorporação:GGML:AUTO:nomic-embed-text-v1.5.f16.gguf \
paragraph_embed.wasm incorporação padrão 768 london.txt -c 8192 -s 42
Crie um instantâneo vetorial
Você pode criar um snapshot da coleção, que pode ser compartilhado e carregado em um banco de dados Qdrant diferente. Você pode encontrar o arquivo snapshot no instantâneos do qdrant
diretório, ou o ~/gaianet/qdrant/instantâneos
diretório no nó Gaia.
curl -X POST 'http://localhost:6333/collections/default/snapshots'
Também recomendamos que você compacte o arquivo de instantâneo.
tar czvf meu.instantâneo.tar.gz meu.instantâneo
Por fim, carregue o meu.instantâneo.tar.gz
arquivar para Huggingface para que o O nó Gaia pode ser baixado e usado.
Guia de vídeo
Próximas etapas
- Inicie um novo nó Gaia
- Personalize o nó Gaia