mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-07-12 06:42:11 +02:00
update more languages
Signed-off-by: Alex Jenkins <kjenkins60@gatech.edu>
This commit is contained in:
parent
835acaa70e
commit
16c2f12a54
249 changed files with 117186 additions and 186 deletions
|
|
@ -17,7 +17,11 @@ Quando arestas (relacionamentos/fatos) são extraídas de documentos, um relacio
|
|||
|
||||
### Problemas com a Abordagem Atual
|
||||
|
||||
<<<<<<< HEAD
|
||||
1. **Carregamento repetitivo de metadados:** Os metadados do documento são agrupados e carregados repetidamente com cada lote de triplas extraídas daquele documento. Isso é um desperdício e redundante - os mesmos metadados viajam como carga com cada saída de extração.
|
||||
=======
|
||||
1. **Carregamento repetitivo de metadados:** Os metadados do documento são agrupados e carregados repetidamente com cada lote de triplas extraídas daquele documento. Isso é um desperdício e redundante - os mesmos metadados viajam como carga útil com cada saída de extração.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
2. **Proveniência superficial:** O relacionamento `subjectOf` atual vincula apenas os fatos diretamente ao documento de nível superior. Não há visibilidade da cadeia de transformação - qual página o fato veio, qual trecho, qual método de extração foi usado.
|
||||
|
||||
|
|
@ -40,13 +44,21 @@ Quando arestas (relacionamentos/fatos) são extraídas de documentos, um relacio
|
|||
→ ...
|
||||
```
|
||||
|
||||
<<<<<<< HEAD
|
||||
3. **Armazenamento unificado:** O grafo de proveniência é armazenado no mesmo grafo de conhecimento que o conhecimento extraído. Isso permite que a proveniência seja consultada da mesma forma que o conhecimento - seguindo as arestas de volta à cadeia de qualquer fato para sua localização de origem exata.
|
||||
=======
|
||||
3. **Armazenamento unificado:** O grafo de proveniência é armazenado no mesmo grafo de conhecimento que o conhecimento extraído. Isso permite que a proveniência seja consultada da mesma forma que o conhecimento - seguindo as arestas de volta à cadeia de qualquer fato até sua localização de origem exata.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
4. **IDs estáveis:** Cada artefato intermediário (página, trecho) possui um ID estável como um nó no grafo.
|
||||
|
||||
5. **Vinculação pai-filho:** Documentos derivados são vinculados aos seus pais até o documento de origem de nível superior, usando tipos de relacionamento consistentes.
|
||||
|
||||
<<<<<<< HEAD
|
||||
6. **Atribuição precisa de fatos:** O relacionamento `subjectOf` nas arestas extraídas aponta para o pai imediato (trecho), não para o documento de nível superior. A proveniência completa é recuperada percorrendo o DAG.
|
||||
=======
|
||||
6. **Atribuição precisa de fatos:** O relacionamento `subjectOf` nas arestas extraídas aponta para o pai imediato (trecho), e não para o documento de nível superior. A proveniência completa é recuperada percorrendo o DAG.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
## Casos de Uso
|
||||
|
||||
|
|
@ -62,7 +74,11 @@ Quando arestas (relacionamentos/fatos) são extraídas de documentos, um relacio
|
|||
5. Trechos vinculam-se a páginas, páginas vinculam-se a documentos de origem.
|
||||
|
||||
**Resultado da Experiência do Usuário:** A interface exibe a resposta do LLM juntamente com a atribuição da fonte. O usuário pode:
|
||||
<<<<<<< HEAD
|
||||
Ver quais fatos apoiaram a resposta.
|
||||
=======
|
||||
Ver quais fatos suportaram a resposta.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
Acessar informações detalhadas de fatos → trechos → páginas → documentos.
|
||||
Examinar os documentos de origem para verificar as alegações.
|
||||
Entender exatamente onde em um documento (qual página, qual seção) um fato se originou.
|
||||
|
|
@ -73,7 +89,11 @@ Entender exatamente onde em um documento (qual página, qual seção) um fato se
|
|||
|
||||
Um fato parece incorreto. Rastreie de volta através do trecho → página → documento para ver o texto original. Foi uma extração ruim ou a fonte em si estava incorreta?
|
||||
|
||||
<<<<<<< HEAD
|
||||
### UC3: Reextração Incremental
|
||||
=======
|
||||
### UC3: Re-extração Incremental
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
O documento de origem é atualizado. Quais trechos/fatos foram derivados dele? Invalide e regenere apenas esses, em vez de reprocessar tudo.
|
||||
|
||||
|
|
@ -83,7 +103,11 @@ Um documento de origem deve ser removido (GDPR, legal, etc.). Percorra o DAG par
|
|||
|
||||
### UC5: Resolução de Conflitos
|
||||
|
||||
<<<<<<< HEAD
|
||||
Dois fatos se contradizem. Rastreie ambos de volta às suas fontes para entender por que e decidir qual confiar (fonte mais autoritária, mais recente, etc.).
|
||||
=======
|
||||
Dois fatos se contradizem. Rastreie ambos de volta às suas fontes para entender o porquê e decidir qual confiar (fonte mais autoritária, mais recente, etc.).
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
### UC6: Ponderação da Autoridade da Fonte
|
||||
|
||||
|
|
@ -97,7 +121,11 @@ Compare os resultados de diferentes métodos/versões de extração. Qual extrat
|
|||
|
||||
### Bibliotecário
|
||||
|
||||
<<<<<<< HEAD
|
||||
O componente bibliotecário já fornece armazenamento de documentos com IDs de documento exclusivos. O sistema de rastreabilidade se integra com essa infraestrutura existente.
|
||||
=======
|
||||
O componente bibliotecário já fornece armazenamento de documentos com IDs de documentos exclusivos. O sistema de rastreabilidade se integra a essa infraestrutura existente.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
#### Capacidades Existentes (já implementadas)
|
||||
|
||||
|
|
@ -109,9 +137,15 @@ API `list-children` - recupera todos os filhos de um documento pai
|
|||
Exclusão em cascata - a remoção de um pai exclui automaticamente todos os documentos filhos
|
||||
|
||||
**Identificação de Documentos:**
|
||||
<<<<<<< HEAD
|
||||
Os IDs de documento são especificados pelo cliente (não gerados automaticamente)
|
||||
Documentos indexados por `(user, document_id)` composto no Cassandra
|
||||
IDs de objeto (UUIDs) gerados internamente para armazenamento de blobs
|
||||
=======
|
||||
Os IDs dos documentos são especificados pelo cliente (não gerados automaticamente)
|
||||
Documentos indexados por `(user, document_id)` composto no Cassandra
|
||||
IDs de objetos (UUIDs) gerados internamente para armazenamento de blobs
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
**Suporte a Metadados:**
|
||||
Campo `metadata: list[Triple]` - triplas RDF para metadados estruturados
|
||||
|
|
@ -126,7 +160,11 @@ Entrega inteligente de conteúdo: documentos < 2MB incorporados, documentos maio
|
|||
#### Arquivos Chave
|
||||
|
||||
`trustgraph-flow/trustgraph/librarian/librarian.py` - Operações principais do bibliotecário
|
||||
<<<<<<< HEAD
|
||||
`trustgraph-flow/trustgraph/librarian/service.py` - Processador de serviço, carregamento de documento
|
||||
=======
|
||||
`trustgraph-flow/trustgraph/librarian/service.py` - Processador de serviço, carregamento de documentos
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
`trustgraph-flow/trustgraph/tables/library.py` - Armazenamento de tabela Cassandra
|
||||
`trustgraph-base/trustgraph/schema/services/library.py` - Definições de esquema
|
||||
|
||||
|
|
@ -136,7 +174,11 @@ O bibliotecário tem os blocos de construção, mas atualmente:
|
|||
1. A vinculação pai-filho é de um único nível - não há auxiliares de travessia de DAG de vários níveis
|
||||
2. Não há vocabulário padrão de tipo de relacionamento (por exemplo, `derivedFrom`, `extractedFrom`)
|
||||
3. Metadados de rastreabilidade (método de extração, confiança, posição do fragmento) não estão padronizados
|
||||
<<<<<<< HEAD
|
||||
4. Não há API de consulta para percorrer toda a cadeia de rastreabilidade de um fato até a fonte
|
||||
=======
|
||||
4. Não há API de consulta para percorrer toda a cadeia de rastreabilidade de um fato até a origem
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
## Design de Fluxo de Extremo a Extremo
|
||||
|
||||
|
|
@ -232,7 +274,11 @@ Documentos de texto ignoram o extrator de PDF e vão diretamente para o processa
|
|||
└─────────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
<<<<<<< HEAD
|
||||
O grafo acíclico dirigido (DAG) resultante é um nível mais curto:
|
||||
=======
|
||||
O grafo acíclico direcionado (DAG) resultante é um nível mais curto:
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
```
|
||||
PDF: Document → Pages → Chunks → Triples/Embeddings
|
||||
|
|
@ -257,10 +303,17 @@ Os metadados de procedência utilizam a ontologia W3C PROV-O. Isso fornece um vo
|
|||
|
||||
| Predicado | Significado | Exemplo |
|
||||
|-----------|---------|---------|
|
||||
<<<<<<< HEAD
|
||||
| `prov:wasDerivedFrom` | Entidade derivada de outra entidade | Página foiDerivadaDe Documento |
|
||||
| `prov:wasGeneratedBy` | Entidade gerada por uma atividade | Página foiGeradaPor AtividadeDeExtraçãoDePDF |
|
||||
| `prov:used` | Atividade que usou uma entidade como entrada | AtividadeDeExtraçãoDePDF usou Documento |
|
||||
| `prov:wasAssociatedWith` | Atividade realizada por um agente | AtividadeDeExtraçãoDePDF foiAssociadaA tg:ExtratorDePDF |
|
||||
=======
|
||||
| `prov:wasDerivedFrom` | Entidade derivada de outra entidade | Página derivadaDocumento |
|
||||
| `prov:wasGeneratedBy` | Entidade gerada por uma atividade | Página geradaPor AtividadeDeExtraçãoDePDF |
|
||||
| `prov:used` | Atividade que usou uma entidade como entrada | AtividadeDeExtraçãoDePDF usou Documento |
|
||||
| `prov:wasAssociatedWith` | Atividade realizada por um agente | AtividadeDeExtraçãoDePDF associadaA tg:ExtratorDePDF |
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
#### Metadados em Cada Nível
|
||||
|
||||
|
|
@ -336,7 +389,11 @@ As incorporações são armazenadas no armazenamento vetorial com metadados, e n
|
|||
| modelo | Modelo de incorporação usado | `text-embedding-ada-002` |
|
||||
| component_version | Versão do incorporador TG | `1.0.0` |
|
||||
|
||||
<<<<<<< HEAD
|
||||
O campo `entity` vincula a incorporação ao grafo de conhecimento (URI do nó). O campo `chunk_id` fornece a proveniência de volta ao fragmento de origem, permitindo a navegação ascendente no DAG até o documento original.
|
||||
=======
|
||||
O campo `entity` vincula a incorporação ao grafo de conhecimento (URI do nó). O campo `chunk_id` fornece a proveniência de volta ao fragmento de origem, permitindo a travessia ascendente do DAG até o documento original.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
#### Extensões do Namespace TrustGraph
|
||||
|
||||
|
|
@ -381,7 +438,11 @@ prov:wasAssociatedWith rdfs:label "was associated with" .
|
|||
prov:startedAtTime rdfs:label "started at" .
|
||||
```
|
||||
|
||||
<<<<<<< HEAD
|
||||
**Predicados TrustGraph:**
|
||||
=======
|
||||
**Predicados do TrustGraph:**
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
```
|
||||
tg:contains rdfs:label "contains" .
|
||||
tg:pageCount rdfs:label "page count" .
|
||||
|
|
@ -401,14 +462,22 @@ tg:sourceCharOffset rdfs:label "source character offset" .
|
|||
tg:sourceCharLength rdfs:label "source character length" .
|
||||
```
|
||||
|
||||
<<<<<<< HEAD
|
||||
**Observação sobre a implementação:** Este processo de inicialização do vocabulário deve ser idempotente - seguro para executar várias vezes sem criar duplicatas. Pode ser acionado no processamento do primeiro documento em uma coleção, ou como uma etapa separada de inicialização da coleção.
|
||||
=======
|
||||
**Observação sobre a implementação:** Este vocabulário de inicialização deve ser idempotente - seguro para executar várias vezes sem criar duplicatas. Pode ser acionado no processamento do primeiro documento em uma coleção, ou como uma etapa separada de inicialização da coleção.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
#### Proveniência de Sub-Fragmentos (Alvo)
|
||||
|
||||
Para uma rastreabilidade mais detalhada, seria valioso registrar exatamente onde, dentro de um fragmento, uma tripla foi extraída. Isso permite:
|
||||
|
||||
Destacar o texto de origem exato na interface do usuário
|
||||
<<<<<<< HEAD
|
||||
Verificar a precisão da extração em relação à fonte
|
||||
=======
|
||||
Verificar a precisão da extração em relação à origem
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
Depurar a qualidade da extração no nível da frase
|
||||
|
||||
**Exemplo com rastreamento de posição:**
|
||||
|
|
@ -436,7 +505,11 @@ subgraph:001 tg:sourceText "John Smith has worked at Acme Corp since 2019" .
|
|||
|
||||
A extração baseada em LLM pode não fornecer naturalmente as posições dos caracteres.
|
||||
Poderia solicitar ao LLM que retornasse a frase/frase de origem junto com as triplas extraídas.
|
||||
<<<<<<< HEAD
|
||||
Alternativamente, pós-processe para fazer uma correspondência aproximada das entidades extraídas com o texto de origem.
|
||||
=======
|
||||
Alternativamente, pós-processar para fazer uma correspondência aproximada das entidades extraídas com o texto de origem.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
Compromisso entre a complexidade da extração e a granularidade da procedência.
|
||||
Pode ser mais fácil de alcançar com métodos de extração estruturados do que com a extração de LLM de formato livre.
|
||||
|
||||
|
|
@ -448,6 +521,7 @@ O grafo de procedência é construído progressivamente à medida que os documen
|
|||
|
||||
| Armazenamento | O que é armazenado | Propósito |
|
||||
|-------|---------------|---------|
|
||||
<<<<<<< HEAD
|
||||
| Bibliotecário | Conteúdo do documento + links pai-filho | Recuperação de conteúdo, exclusão em cascata |
|
||||
| Grafo de Conhecimento | Arestas pai-filho + metadados | Consultas de procedência, atribuição de fatos |
|
||||
|
||||
|
|
@ -456,6 +530,16 @@ Ambos os armazenamentos mantêm a mesma estrutura de grafo. O bibliotecário arm
|
|||
### Princípios de Design Chave
|
||||
|
||||
1. **ID do documento como a unidade de fluxo** - Os processadores passam IDs, não o conteúdo. O conteúdo é buscado do bibliotecário quando necessário.
|
||||
=======
|
||||
| Librarian | Conteúdo do documento + links pai-filho | Recuperação de conteúdo, exclusão em cascata |
|
||||
| Knowledge Graph | Arestas pai-filho + metadados | Consultas de procedência, atribuição de fatos |
|
||||
|
||||
Ambos os armazenamentos mantêm a mesma estrutura de grafo. O librarian armazena o conteúdo; o grafo armazena os relacionamentos e permite consultas de travessia.
|
||||
|
||||
### Princípios de Design Chave
|
||||
|
||||
1. **ID do documento como a unidade de fluxo** - Os processadores passam IDs, não o conteúdo. O conteúdo é buscado do librarian quando necessário.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
2. **Emitir uma vez na origem** - Os metadados são gravados no grafo uma vez quando o processamento começa, e não repetidos downstream.
|
||||
|
||||
|
|
@ -463,21 +547,34 @@ Ambos os armazenamentos mantêm a mesma estrutura de grafo. O bibliotecário arm
|
|||
|
||||
4. **Construção progressiva do grafo** - Cada processador adiciona seu nível ao grafo. A cadeia completa de procedência é construída incrementalmente.
|
||||
|
||||
<<<<<<< HEAD
|
||||
5. **Otimização pós-fragmentação** - Após a fragmentação, as mensagens carregam tanto o ID quanto o conteúdo. Os fragmentos são pequenos (2-4 KB), portanto, incluir o conteúdo evita viagens de ida e volta desnecessárias ao bibliotecário, preservando a procedência por meio do ID.
|
||||
|
||||
## Tarefas de Implementação
|
||||
|
||||
### Alterações no Bibliotecário
|
||||
=======
|
||||
5. **Otimização pós-fragmentação** - Após a fragmentação, as mensagens carregam tanto o ID quanto o conteúdo. Os fragmentos são pequenos (2-4 KB), portanto, incluir o conteúdo evita viagens de ida e volta desnecessárias ao librarian, preservando a procedência por meio do ID.
|
||||
|
||||
## Tarefas de Implementação
|
||||
|
||||
### Alterações no Librarian
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
#### Estado Atual
|
||||
|
||||
Inicia o processamento do documento enviando o ID do documento para o primeiro processador.
|
||||
<<<<<<< HEAD
|
||||
Não possui conexão com o armazenamento de triplas - os metadados são agrupados com as saídas de extração.
|
||||
=======
|
||||
Não possui conexão com o triple store - os metadados são agrupados com as saídas de extração.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
`add-child-document` cria links pai-filho de um nível.
|
||||
`list-children` retorna apenas os filhos imediatos.
|
||||
|
||||
#### Alterações Necessárias
|
||||
|
||||
<<<<<<< HEAD
|
||||
**1. Nova interface: Conexão com o armazenamento de triplas**
|
||||
|
||||
O bibliotecário precisa emitir as bordas de metadados do documento diretamente para o grafo de conhecimento ao iniciar o processamento.
|
||||
|
|
@ -487,6 +584,17 @@ Na inicialização do processamento: emita os metadados do documento raiz como b
|
|||
**2. Vocabulário de tipo de documento**
|
||||
|
||||
Padronize os valores de `document_type` para documentos filhos:
|
||||
=======
|
||||
**1. Nova interface: Conexão com o triple store**
|
||||
|
||||
O librarian precisa emitir as bordas de metadados do documento diretamente para o knowledge graph ao iniciar o processamento.
|
||||
Adicionar cliente/publicador do triple store ao serviço do librarian.
|
||||
Na inicialização do processamento: emitir os metadados do documento raiz como bordas do grafo (uma vez).
|
||||
|
||||
**2. Vocabulário de tipo de documento**
|
||||
|
||||
Padronizar os valores de `document_type` para documentos filhos:
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
`source` - documento original carregado.
|
||||
`page` - página extraída da fonte (PDF, etc.).
|
||||
`chunk` - fragmento de texto derivado da página ou da fonte.
|
||||
|
|
@ -495,8 +603,13 @@ Padronize os valores de `document_type` para documentos filhos:
|
|||
|
||||
| Interface | Alteração |
|
||||
|-----------|--------|
|
||||
<<<<<<< HEAD
|
||||
| Armazenamento de triplas | Nova conexão de saída - emita bordas de metadados do documento |
|
||||
| Início do processamento | Emita metadados para o grafo antes de encaminhar o ID do documento |
|
||||
=======
|
||||
| Triple store | Nova conexão de saída - emitir bordas de metadados do documento |
|
||||
| Início do processamento | Emitir metadados para o grafo antes de encaminhar o ID do documento |
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
### Alterações no Extrator de PDF
|
||||
|
||||
|
|
@ -505,6 +618,7 @@ Padronize os valores de `document_type` para documentos filhos:
|
|||
Recebe o conteúdo do documento (ou transmite documentos grandes).
|
||||
Extrai texto das páginas PDF.
|
||||
Transmite o conteúdo da página para o fragmentador.
|
||||
<<<<<<< HEAD
|
||||
Não interage com o bibliotecário ou o armazenamento de triplas.
|
||||
|
||||
#### Alterações Necessárias
|
||||
|
|
@ -520,6 +634,23 @@ Para cada página: chame `add-child-document` com pai = ID do documento raiz.
|
|||
O extrator de PDF precisa emitir bordas pai-filho para o grafo de conhecimento.
|
||||
Adicione um cliente/publicador de armazenamento de triplas.
|
||||
Para cada página: emita uma borda que vincule o documento da página ao documento pai.
|
||||
=======
|
||||
Não interage com o librarian ou o triple store.
|
||||
|
||||
#### Alterações Necessárias
|
||||
|
||||
**1. Nova interface: Cliente do librarian**
|
||||
|
||||
O extrator de PDF precisa salvar cada página como um documento filho no librarian.
|
||||
Adicionar cliente do librarian ao serviço do extrator de PDF.
|
||||
Para cada página: chamar `add-child-document` com pai = ID do documento raiz.
|
||||
|
||||
**2. Nova interface: Conexão com o triple store**
|
||||
|
||||
O extrator de PDF precisa emitir bordas pai-filho para o knowledge graph.
|
||||
Adicionar cliente/publicador do triple store.
|
||||
Para cada página: emitir uma borda que vincule o documento da página ao documento pai.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
**3. Alterar o formato de saída**
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue