Skip to main content

Host-Model Extraction

Requires edge-studio 0.0.1rc22 or later.

The deterministic URL importer stores a page as one fact, or splits HTML table rows. For long prose pages where neither is enough, a stronger local Mac model can read the fetched material and propose discrete facts. The model only proposes — Edge validates every candidate against edge.demo.facts.v1 before anything is written to the store.

Run It​

edge demo facts import-url "https://example.org/service-reference" \
--store service_docs_v1 \
--topic "service reference" \
--tags service,docs \
--extractor host-model \
--extractor-model qwen3.5-27b-4bit \
--json
  • The extractor mode is explicit: without --extractor host-model, imports stay deterministic. There is no silent model fallback.
  • --extractor-model names a local model; it defaults to qwen3.5-27b-4bit. If the model is not available locally, the command fails closed with a fetch remediation — it never reaches the network to find one.
  • Host-model extraction works on single-URL imports only. crawl-url does not accept it.

What The Validation Layer Guarantees​

Model output is treated as candidate facts only:

  1. The model receives the fetched material plus a strict output contract.
  2. Edge parses the response and normalizes only the top-level candidate wrapper.
  3. Every candidate row passes the same deterministic edge.demo.facts.v1 validator used for file imports — required fields, types, and counts.
  4. Invalid output fails closed before any store write. The model cannot redirect the target store.

Read The Receipt​

The receipt marks this path as non-deterministic and fingerprints every stage:

FieldMeaning
extractor.modehost-model
extractor.extractor_model_ref, model_path, model_sha256Which local model ran, with a directory-manifest hash
prompt_sha256, schema_sha256The exact instruction and output contract
input_sha256, model_input_sha256The material given to the model
output_sha256, validated_payload_sha256Raw model output and the validated payload
source_chars, model_input_chars, input_truncatedWhether the model saw the whole page: long pages are clipped at --max-chars, and the receipt says so truthfully
validation_statuspassed — otherwise nothing was written
non_deterministic_extractiontrue

Two different runs on the same page can produce different fact splits — that is the trade-off you opt into for extraction quality. If the receipt reports input_truncated: true, raise --max-chars or import the page in sections.

When To Use Which Extractor​

MaterialUse
Index page with an HTML tableDeterministic --split html-table-rows
Short page, one coherent topicDeterministic single-page import
Long prose with many discrete facts--extractor host-model
Several linked pagescrawl-url (deterministic only)