embeddings

embeddings

Embeddings de textos — transforma documentos em vetores numéricos.

Os vetores servem para busca semântica, agrupamento e classificação: textos de sentido parecido ficam com vetores próximos.

Modo nuvem (default)

Faz upload dos arquivos, calcula os vetores no escritório com um modelo do Azure AI Foundry da FGV (text-embedding-3-small por padrão) e extrai o resultado na pasta saida.

Modo local (local=True)

Roda sentence-transformers na própria máquina (pip install labdados[embeddings-local]) ou, com base_url_local, qualquer servidor OpenAI-compatível (Ollama, OpenAI, um recurso Azure). Leitura, corte em trechos e formato de saída vêm de labdados_core.embeddings — a mesma rotina do serviço do escritório.

Saída (nos dois modos)

  • embeddings.parquet — um trecho por linha: arquivo, doc_id, chunk, texto, embedding (lista de floats);
  • chunks.csv — os mesmos trechos sem os vetores;
  • _reproducibilidade/parametros.json — modelo, tamanho do trecho etc.

Functions

Name Description
embeddings Calcula embeddings de textos.

embeddings

embeddings.embeddings(
    arquivos,
    *,
    saida=None,
    api_key=None,
    modelo='text-embedding-3-small',
    coluna_texto='',
    max_chars=MAX_CHARS_PADRAO,
    sobreposicao=SOBREPOSICAO_PADRAO,
    local=False,
    modelo_local=None,
    base_url_local=None,
    api_key_local=None,
    dataframe=False,
    client=None,
    progress=True,
)

Calcula embeddings de textos.

Parameters

Name Type Description Default
arquivos PathLike | list[PathLike] .txt, .md, .docx, .csv ou .xlsx (arquivo, lista ou pasta). Em CSV/XLSX, cada linha vira um documento. required
saida PathLike | None Pasta de saída. Default: ./resultados_labdados/. None
api_key str | None Chave de API do escritório (modo nuvem). None
modelo str Modo nuvem (Azure AI Foundry da FGV): "text-embedding-3-small" (default, o mais barato), "text-embedding-3-large", "embed-v-4-0" ou "Cohere-embed-v3-multilingual" (Cohere são multilíngues). Use o mesmo modelo para todos os textos que serão comparados — vetores de modelos diferentes não são comparáveis. 'text-embedding-3-small'
coluna_texto str CSV/XLSX: coluna com o texto. Vazio = concatena todas as colunas. ''
max_chars int Textos longos são cortados em trechos de até max_chars caracteres (default 2000, ~500 tokens), com sobreposicao caracteres repetidos entre trechos vizinhos. Cada trecho vira um vetor. MAX_CHARS_PADRAO
sobreposicao int Textos longos são cortados em trechos de até max_chars caracteres (default 2000, ~500 tokens), com sobreposicao caracteres repetidos entre trechos vizinhos. Cada trecho vira um vetor. MAX_CHARS_PADRAO
local bool Se True, calcula na própria máquina. False
modelo_local str | None Modo local: modelo do sentence-transformers (default paraphrase-multilingual-MiniLM-L12-v2) ou, com base_url_local, o nome do modelo/deployment no servidor. None
base_url_local str | None Servidor OpenAI-compatível para o modo local (ex.: "http://localhost:11434/v1" no Ollama, ou o endpoint /openai/v1/ de um recurso Azure). Sem base_url_local, usa sentence-transformers. None
api_key_local str | None Servidor OpenAI-compatível para o modo local (ex.: "http://localhost:11434/v1" no Ollama, ou o endpoint /openai/v1/ de um recurso Azure). Sem base_url_local, usa sentence-transformers. None
dataframe bool Se True, devolve um pandas.DataFrame lido do embeddings.parquet em vez do caminho da pasta (requer pandas e pyarrow). False
client Client | None Cliente reaproveitado (modo nuvem). None
progress bool Spinner no stderr. True

Returns

Name Type Description
Path | pandas.DataFrame Pasta de saída, ou o DataFrame com os trechos e vetores.

Examples

>>> import labdados
>>> df = labdados.embeddings("acordaos.csv", coluna_texto="ementa", dataframe=True)
>>> df[["arquivo", "doc_id", "texto"]].head()

Modo local com sentence-transformers:

>>> labdados.embeddings("textos/", local=True)