|
<< İç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):
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.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": "<kaynak havuz>"}} (SYSADMIN): <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 |