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.
12 KiB
| layout | title | parent |
|---|---|---|
| default | Veri Çıkarma Akışları | 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:
- İçerik, blob depolama alanına yüklenir.
- Cassandra'da bir metaveri kaydı oluşturulur.
- 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
- İçeriği al (doğrudan
dataveyadocument_idüzerinden kütüphaneciden) - Sayfaları PyPDF kullanarak çıkar
- 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
- Metin içeriğini alın (doğrudan veya kütüphaneci aracılığıyla)
- Özyinelemeli karakter ayırıcı kullanarak parçalara ayırın
- 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ç:
- Varlık Bağlamlarını Alın
- Bağlam metniyle gömme hizmetini çağırın
- 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ç:
- Parçayı Al
- Parça metniyle gömme hizmetini çağır
- 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:
- Satırları Al
- Yapılandırılmış indeks alanlarını göm
- 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