trustgraph/docs/tech-specs/extraction-flows.tr.md
Alex Jenkins 8954fa3ad7 Feat: TrustGraph i18n & Documentation Translation Updates (#781)
Native CLI i18n: The TrustGraph CLI has built-in translation support
that dynamically loads language strings. You can test and use
different languages by simply passing the --lang flag (e.g., --lang
es for Spanish, --lang ru for Russian) or by configuring your
environment's LANG variable.

Automated Docs Translations: This PR introduces autonomously
translated Markdown documentation into several target languages,
including Spanish, Swahili, Portuguese, Turkish, Hindi, Hebrew,
Arabic, Simplified Chinese, and Russian.
2026-04-14 12:08:32 +01:00

355 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
layout: default
title: "Veri Çıkarma Akışları"
parent: "Turkish (Beta)"
---
# Veri Çıkarma Akışları
> **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
Bu belge, verilerin TrustGraph veri çıkarma işlem hattı üzerinden nasıl aktığını, belge gönderiminden başlayarak bilgi depolarına kaydedilmesine kadar olan süreci açıklamaktadır.
## Genel Bakış
```
┌──────────┐ ┌─────────────┐ ┌─────────┐ ┌────────────────────┐
│ Librarian│────▶│ PDF Decoder │────▶│ Chunker │────▶│ Knowledge │
│ │ │ (PDF only) │ │ │ │ Extraction │
│ │────────────────────────▶│ │ │ │
└──────────┘ └─────────────┘ └─────────┘ └────────────────────┘
│ │
│ ├──▶ Triples
│ ├──▶ Entity Contexts
│ └──▶ Rows
└──▶ Document Embeddings
```
## İçerik Depolama
### Blob Depolama (S3/Minio)
Belge içeriği, S3 uyumlu blob depolama alanında saklanır:
Yol formatı: `doc/{object_id}`, burada object_id bir UUID'dir.
Tüm belge türleri burada saklanır: kaynak belgeler, sayfalar, parçalar.
### Metaveri Depolama (Cassandra)
Cassandra'da saklanan belge metaverileri şunları içerir:
Belge ID'si, başlık, tür (MIME türü).
Blob depolama alanına `object_id` referansı.
Alt belgelere (sayfalar, parçalar) ait `parent_id`.
`document_type`: "kaynak", "sayfa", "parça", "cevap".
### İçerik vs. Akış Eşiği
İçerik iletimi, boyuta dayalı bir strateji kullanır:
**< 2MB**: İçerik, mesaj içinde (base64 ile kodlanmış) yer alır.
** 2MB**: Yalnızca `document_id` gönderilir; işlemci, kütüphaneci API'si aracılığıyla içeriği alır.
## 1. Aşama: Belge Gönderimi (Kütüphaneci)
### Giriş Noktası
Belgeler, kütüphanecinin `add-document` işlemi aracılığıyla sisteme girer:
1. İçerik, blob depolama alanına yüklenir.
2. Cassandra'da bir metaveri kaydı oluşturulur.
3. Belge ID'si döndürülür.
### Çıkarım Tetikleme
`add-processing` işlemi, çıkarımı tetikler:
`document_id`, `flow` (işlem hattı ID'si) ve `collection` (hedef depolama alanı) belirtir.
Kütüphanecinin `load_document()` işlemi, içeriği alır ve akış giriş kuyruğuna yayınlar.
### Şema: Belge
```
Document
├── metadata: Metadata
│ ├── id: str # Document identifier
│ ├── user: str # Tenant/user ID
│ ├── collection: str # Target collection
│ └── metadata: list[Triple] # (largely unused, historical)
├── data: bytes # PDF content (base64, if inline)
└── document_id: str # Librarian reference (if streaming)
```
**Yönlendirme**: `kind` alanına göre:
`application/pdf` `document-load` kuyruğu PDF Kod Çözücü
`text/plain` `text-load` kuyruğu Parçalayıcı
## 2. Aşama: PDF Kod Çözücü
PDF belgelerini metin sayfalarına dönüştürür.
### İşlem
1. İçeriği al (doğrudan `data` veya `document_id` üzerinden kütüphaneciden)
2. Sayfaları PyPDF kullanarak çıkar
3. Her sayfa için:
Kütüphanecide alt belge olarak kaydet (`{doc_id}/p{page_num}`)
Kaynak üçlülerini yayınla (sayfa, belgeden türetilmiştir)
Parçalayıcıya ilet
### Şema: TextDocument
```
TextDocument
├── metadata: Metadata
│ ├── id: str # Page URI (e.g., https://trustgraph.ai/doc/xxx/p1)
│ ├── user: str
│ ├── collection: str
│ └── metadata: list[Triple]
├── text: bytes # Page text content (if inline)
└── document_id: str # Librarian reference (e.g., "doc123/p1")
```
## 3. Aşama: Parçalayıcı (Chunker)
Metni, yapılandırılmış boyutta parçalara ayırır.
### Parametreler (akışa bağımlı olarak yapılandırılabilir)
`chunk_size`: Karakter cinsinden hedef parça boyutu (varsayılan: 2000)
`chunk_overlap`: Parçalar arasındaki örtüşme (varsayılan: 100)
### İşlem
1. Metin içeriğini alın (doğrudan veya kütüphaneci aracılığıyla)
2. Özyinelemeli karakter ayırıcı kullanarak parçalara ayırın
3. Her parça için:
Kütüphanecide alt belge olarak kaydedin (`{parent_id}/c{index}`)
Kaynak bilgilerini yayınlayın (parça, sayfadan/belgeden türetilmiştir)
Çıkarma işleme modüllerine yönlendirin
### Şema: Parça (Chunk)
```
Chunk
├── metadata: Metadata
│ ├── id: str # Chunk URI
│ ├── user: str
│ ├── collection: str
│ └── metadata: list[Triple]
├── chunk: bytes # Chunk text content
└── document_id: str # Librarian chunk ID (e.g., "doc123/p1/c3")
```
### Belge Kimlik Hiyerarşisi
Alt belgeler, kimlik içinde kendi kökenlerini kodlar:
Kaynak: `doc123`
Sayfa: `doc123/p5`
Sayfadan parça: `doc123/p5/c2`
Metinden parça: `doc123/c2`
## 4. Aşama: Bilgi Çıkarımı
Kullanılabilir çoklu çıkarma kalıpları, akış yapılandırması tarafından seçilir.
### Kalıp A: Temel GraphRAG
İki paralel işlemci:
**kg-extract-definitions**
Giriş: Parça
Çıkış: Üçlüler (varlık tanımları), Varlık Bağlamları
Çıkarır: varlık etiketleri, tanımlar
**kg-extract-relationships**
Giriş: Parça
Çıkış: Üçlüler (ilişkiler), Varlık Bağlamları
Çıkarır: özne-yüklem-nesne ilişkileri
### Kalıp B: Ontoloji Odaklı (kg-extract-ontology)
Giriş: Parça
Çıkış: Üçlüler, Varlık Bağlamları
Çıkarımı yönlendirmek için yapılandırılmış bir ontoloji kullanır
### Kalıp C: Ajan Tabanlı (kg-extract-agent)
Giriş: Parça
Çıkış: Üçlüler, Varlık Bağlamları
Çıkarım için ajan çerçevesini kullanır
### Kalıp D: Satır Çıkarımı (kg-extract-rows)
Giriş: Parça
Çıkış: Satırlar (üçlüler değil, yapılandırılmış veri)
Yapılandırılmış kayıtları çıkarmak için şema tanımını kullanır
### Şema: Üçlüler
```
Triples
├── metadata: Metadata
│ ├── id: str
│ ├── user: str
│ ├── collection: str
│ └── metadata: list[Triple] # (set to [] by extractors)
└── triples: list[Triple]
└── Triple
├── s: Term # Subject
├── p: Term # Predicate
├── o: Term # Object
└── g: str | None # Named graph
```
### Şema: Varlık Bağlamları
```
EntityContexts
├── metadata: Metadata
└── entities: list[EntityContext]
└── EntityContext
├── entity: Term # Entity identifier (IRI)
├── context: str # Textual description for embedding
└── chunk_id: str # Source chunk ID (provenance)
```
### Şema: Satırlar
```
Rows
├── metadata: Metadata
├── row_schema: RowSchema
│ ├── name: str
│ ├── description: str
│ └── fields: list[Field]
└── rows: list[dict[str, str]] # Extracted records
```
## 5. Aşama: Gömme (Embedding) Oluşturma
### Grafik Gömme (Graph Embeddings)
Varlık bağlamlarını vektör gömmelerine dönüştürür.
**Süreç:**
1. Varlık Bağlamlarını Alın
2. Bağlam metniyle gömme hizmetini çağırın
3. GrafikGömme'leri Çıktılayın (varlık vektör eşlemesi)
**Şema: GrafikGömme (GraphEmbeddings)**
```
GraphEmbeddings
├── metadata: Metadata
└── entities: list[EntityEmbeddings]
└── EntityEmbeddings
├── entity: Term # Entity identifier
├── vector: list[float] # Embedding vector
└── chunk_id: str # Source chunk (provenance)
```
### Belge Gömme (Document Embeddings)
Parça metnini doğrudan vektör gömmelerine dönüştürür.
**Süreç:**
1. Parçayı Al
2. Parça metniyle gömme hizmetini çağır
3. DocumentEmbeddings çıktısını ver
**Şema: DocumentEmbeddings**
```
DocumentEmbeddings
├── metadata: Metadata
└── chunks: list[ChunkEmbeddings]
└── ChunkEmbeddings
├── chunk_id: str # Chunk identifier
└── vector: list[float] # Embedding vector
```
### Satır Gömme (Row Embeddings)
Satır indeks alanlarını vektör gömmelerine dönüştürür.
**İşlem:**
1. Satırları Al
2. Yapılandırılmış indeks alanlarını göm
3. Satır vektör deposuna çıktı ver
## 6. Aşama: Depolama
### Üçlü Depo (Triple Store)
Gelen: Üçlüler
Depolama: Cassandra (varlık odaklı tablolar)
İsimlendirilmiş grafikler, temel bilgiyi köken bilgisinden ayırır:
`""` (varsayılan): Temel bilgi gerçekleri
`urn:graph:source`: Çıkarma kökeni
`urn:graph:retrieval`: Sorgu zamanı ıklanabilirliği
### Vektör Deposu (Grafik Gömme)
Gelen: GrafikGömme (GraphEmbeddings)
Depolama: Qdrant, Milvus veya Pinecone
Dizin: Varlık IRI'si ile
Metaveri: Köken için chunk_id
### Vektör Deposu (Belge Gömme)
Gelen: BelgeGömme (DocumentEmbeddings)
Depolama: Qdrant, Milvus veya Pinecone
Dizin: chunk_id ile
### Satır Deposu (Row Store)
Gelen: Satırlar
Depolama: Cassandra
Şema odaklı tablo yapısı
### Satır Vektör Deposu
Gelen: Satır gömmeleri
Depolama: Vektör Veritabanı
Dizin: Satır indeks alanları ile
## Metaveri Alanı Analizi
### Aktif Olarak Kullanılan Alanlar
| Alan | Kullanım |
|-------|-------|
| `metadata.id` | Belge/parça tanımlayıcı, günlükleme, köken |
| `metadata.user` | Çoklu kiracılık, depolama yönlendirme |
| `metadata.collection` | Hedef koleksiyon seçimi |
| `document_id` | Kütüphaneci referansı, köken bağlantısı |
| `chunk_id` | İşlem hattı boyunca köken takibi |
<<<<<<< HEAD
### Potansiyel Olarak Gereksiz Alanlar
| Alan | Durum |
|-------|--------|
| `metadata.metadata` | Tüm çıkarıcılar tarafından `[]` olarak ayarlanır; belge düzeyindeki metaveri artık gönderim zamanında kütüphaneci tarafından işlenir |
=======
### Kaldırılan Alanlar
| Alan | Durum |
|-------|--------|
| `metadata.metadata` | `Metadata` sınıfından kaldırıldı. Belge düzeyindeki metaveri üçlüleri artık kütüphaneci tarafından doğrudan üçlü depoya gönderim zamanında gönderilir, çıkarma hattı üzerinden taşınmaz. |
>>>>>>> e3bcbf73 (The metadata field (list of triples) in the pipeline Metadata class)
### Bayt Alanı Modeli
Tüm içerik alanları (`data`, `text`, `chunk`) `bytes`'tür, ancak tüm işlemciler tarafından hemen UTF-8 dizelerine kod çözülür. İşlemci tarafından ham bayt kullanılmaz.
## Akış Yapılandırması
Akışlar harici olarak tanımlanır ve kütüphaneci aracılığıyla yapılandırma hizmetinden sağlanır. Her akış şunları belirtir:
Giriş kuyrukları (`text-load`, `document-load`)
İşlemci zinciri
Parametreler (parça boyutu, çıkarma yöntemi, vb.)
Örnek akış modelleri:
`pdf-graphrag`: PDF → Kod Çözücü → Parçalayıcı → Tanımlar + İlişkiler → Gömme
`text-graphrag`: Metin → Parçalayıcı → Tanımlar + İlişkiler → Gömme
`pdf-ontology`: PDF → Kod Çözücü → Parçalayıcı → Ontoloji Çıkarma → Gömme
`text-rows`: Metin → Parçalayıcı → Satır Çıkarma → Satır Deposu