Saltar para o conteúdo principal
Versão: 1.0.0

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 .

observação

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.

Próximas etapas

Diverte-te!