3.4 Yardım ve belge havuzları, MCP araçları help_* / doc_* (şema v2)

<< İçindekileri Görüntülemek İçin Tıklayın >>

Yer:  Teknik Kılavuzlar > Netsim System Agent İstemci Protokolü Referansı > 3. Diğer HTTP uçları (/ClientREST/...) >

3.4 Yardım ve belge havuzları, MCP araçları help_* / doc_* (şema v2)

İki havuz, aynı şema (doc$ tabloları, FTS5, koleksiyon tabanlı; MASTER'a girmez):

  • Yardım havuzu — NETSİM uygulama yardımı (netsim-help). Ajan paketindeki help.db'nin kendisidir: conf docs/help, öndeğer ${APPDIR}/help.db; içe alınmaz, salt okunur açılır, yeni paket dosyayı değiştirince yardım tazelenir. Yetki denetimi yoktur. Dosya yoksa help pool not found (...). MCP help_*, REST Help* okur.
  • Belge havuzu — müşteri belgeleri, müşteri veritabanı başına. İlişki MASTER kaydındadır: ALTER DATABASE <db> SET DOCUMENTS INTERNAL (doc$ tabloları veritabanının kendi deposunda) | DATABASE <ilişkili db> (başka bir kayıtlı veritabanının deposunda) | OFF. Havuz SQLite (dosya, FTS5) ya da PostgreSQL depolu olabilir (katalog dışındaki ivd$docs şeması: ağırlıklı tsvector + GIN, Türkçe / Latin aksanlar doc$fold ile katlanır, vektörler bytea; score -ts_rank_cd, özet ts_headline) ya da Firebird depolu olabilir (4+, şemasız doc$ tabloları, vektörler BLOB; tam metin dizini ajanın belleğinde, ilk aramada kurulur ve içe alma değişince yenilenir - puan ve özet SQLite FTS5'in bm25 / snippet'iyle aynı formül, aksanlar PostgreSQL'deki gibi katlanır). Yalnız IMPORTDOC yazar (aşağıda; SQLite'ta WAL, PostgreSQL'de tek işlem - bir içe alma sonraki okumada görünür). MCP doc_* (database argümanı, yoksa sunucunun -DATABASE'i), REST Doc* (oturumun veritabanı) okur; REST'te oturumun kimliğiyle süzülür. Hatalar: database is required, database is not registered, has no document pool (SET DOCUMENTS yok), only SQLITE, POSTGRESQL and FIREBIRD storage are supported, document pool not imported (...).

Havuz dosyası istek başına açılıp kapanır (açık tutamaç paketin dosyayı değiştirmesini engellemez). Araçlar her tools/list'te vardır.

Sorgu gömmesi: model yardım havuzunun (paketteki help.db) dizininde models/e5-int8/ (model_int8.onnx + tokenizer.json; havuzun model paketi), ONNX Runtime ajanın yanındaki onnxruntime.dll / libonnxruntime.so'dan çalışma anında yüklenir (ajan ona bağlanmaz). Vektörler süreç içinde bir kez okunur, içe alma değişince tazelenir.

İçe alma: POST /AdminREST/EXECCOMMAND {"command": "IMPORTDOC", "params": {"database": "<db>", "collection": "<ad>", "path": "&lt;kaynak havuz>"}} (SYSADMIN): &lt;db>'nin belge havuzuna (SET DOCUMENTS) alır; üç parametre de zorunlu (400). Koleksiyon adı ^[a-z0-9][a-z0-9-]*$; kaynak salt okunur bağlanır. Yalnız o koleksiyonun satırları silinip kaynaktan yeniden yazılır (tek işlem; hata olursa hiçbir şey değişmez), FTS yeniden kurulur, doc$entity_kind ve genel tarif (doc$meta, collection = '') tazelenir. Başarı 200 {result: true, collection, topics, chunks, docsDb, source}; kaynakta olmayan koleksiyon, olmayan dosya ya da geçersiz ad 202 {result: false, message} (hedef dokunulmaz). Tarif havuzun doc_import.sql'idir.

Yetki (belge havuzu): araçta uygulanır. İzinli konu = erisim = 'herkes' koleksiyonun konusu ya da doc$acl.principal'ı çağıranın kümesinde ({kullanıcı, roller…, *}, ASCII büyük/küçük harf duyarsız) olan konu; süzme sıralamadan önce yapılır, yetkisiz konu "bulunamadı" olarak döner. stdio MCP kullanıcıya eşit sayılır ve bütün koleksiyonları görür.

Araç Argümanlar Sonuç metni (JSON)
doc_collections — izinli koleksiyonlar [{id, title, kind, erisim, topics, generated}], netsim-help önce
doc_search query, collection?, mode? = fts (öndeğer) | vector | hybrid, limit = 10 (en çok 50) [{collection, slug, title, breadcrumb, snippet, score, method, links: [{kind, key}]}] — doc$chunk_fts MATCH, konu başına en iyi parça, bm25(doc$chunk_fts, <doc$meta.search_bm25_weights>) (küçük = iyi), snippet doc$meta.chunk_fts_snippet_column. Sözcükler: 2+ karakter, en çok 12, doc$meta.search_stopwords atılır (hepsi atılırsa asılları kalır), çift tırnakla kaçırılır, 3+ karakterli olan önek eşleşir; önce hepsi (AND), sonuç yoksa herhangi biri (OR); kullanıcının yazdığı AND/OR/NOT/NEAR yok sayılır. vector: q = sorgu gömmesi (doc$meta.vec_query_prefix + sorgu; tokenizer HF tokenizers ile birebir, model int8 e5, maske ağırlıklı ortalama + L2), skor(konu) = max(parça·q ilk 80, konu·q ilk 80 + 0.02) yalnız izinli konularda, score = kosinüs (büyük = iyi), snippet en iyi parçanın ilk 200 karakteri. hybrid: RRF(k=60) = tam metin ilk 20 × 1.0 + vektör ilk 20 × 1.5, score = RRF toplamı; tam metin boşsa (yalnız durak sözcük ya da eklerle yazılmış sözcükler) vektör tek başına. method = fts / vector / fts+vector. Model ya da çalışma zamanı yoksa vector / hybrid isError + embedding model not found / embedding runtime not found; fts etkilenmez
doc_get collection? + slug | kind + key {collection, slug, title, breadcrumb, category, description, source_uri, mime, mtime, body_md, links: [{kind, key, confidence, source}], related: [{collection, slug, title}]} — varlıkla: ona bağlı en güvenilir konu; related aynı form_class / islem_kodu'na bağlı ≤ 10 konu
doc_entity kind, key {collection, kind, key, title, attrs, relations: [{rel, kind, key}], relations_in, aliases: [{alias, confidence}], topics, help_url[, resolved_from]} — anahtar harf duyarsız; eski ad (doc$alias) geçerli anahtara çözülür (resolved_from); help_url doc$entity_kind.url_template'ten (<key>; <v3> = koleksiyonun help_url_v3'ü, yoksa ajan sürümünün yalnız üçüncü alanı - 5.1.1.1531 için 1)
doc_entities kind?, q?, limit = 20 (en çok 200) argümansız: varlık türleri [{kind, title, key_rule, collection, entities}]; yoksa anahtarında ya da başlığında q geçen varlıklar [{collection, kind, key, title}]
doc_links kind, key bağlı izinli konular [{collection, slug, title, breadcrumb, confidence, source}], en güvenilir önce
help_search query, module?, limit netsim-help üzerinde doc_search: [{slug, title, breadcrumb, snippet, score, module, form_class}]; module konunun o modül varlığına bağlı olmasını ister
help_get_topic slug | form_class | islem_kodu {slug, title, breadcrumb, body_md, module, form_class, islem_kodu, related: [{slug, title}]} — form_class: bağlı en güvenilir konu (eski ad çözülür); islem_kodu: ona bağlı konu, yoksa açtığı formunki (opens, sonra opens_mobile)
help_form_info form_class {form: {form_class, title, …öznitelikler}, islem_kodlari: [{kod, rel, title, …}], topics: [{slug, title, confidence, source}], help_url[, legacy_alias]}
help_stats — yardım havuzunun {meta: <genel tarif>, collections: {<id>: {…, meta}}, counts: {topic, chunk, topic_vec, chunk_vec, entity, entity_rel, alias, link, acl}}
doc_stats — belge havuzunun aynı biçimdeki özeti