mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-04-25 16:36:21 +02:00
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.
355 lines
12 KiB
Markdown
355 lines
12 KiB
Markdown
---
|
||
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ı açı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
|