mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-04-26 00:46:22 +02:00
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
|