iArt.ai
AI 모션 그래픽 소프트웨어, 누구나 사용할 수 있는 After Effects 대안, 텍스트 프롬프트로 몇 분 안에 애니메이션·설명 영상 제작
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Dr. Voluminous: The Digital Archives of Dr. John Gill Documentation Guide Welcome to the Goat Yard Archive repository for John Gill's Exposition of the Entire Bible! We have compartmentalized our internal logic documentation to best serve autonomous AI agents and standard developers alike: • 🤖 AI Context: Read llms.txt to discover the architectural blueprint. • 🚦 Agent Guardrails: Read AGENTS.md for explicit safety limits and the full pipeline ingestion runbook. • ⌨️ Coding Standards: Read .cursorrules for our standard tech stack protocols.README 전문 보기 ↗
Welcome to the Goat Yard Archive repository for John Gill's Exposition of the Entire Bible! We have compartmentalized our internal logic documentation to best serve autonomous AI agents and standard developers alike:
llms.txt to discover the architectural blueprint.AGENTS.md for explicit safety limits and the full pipeline ingestion runbook..cursorrules for our standard tech stack protocols.This system uses a Retrieval-Augmented Generation (RAG) pipeline to provide grounded, theological answers based on the writings of Dr. John Gill. The backend assumes the persona of an 18th-century contemporary to maintain tonal consistency.
User Inquiry
Vector Search & Retrieval (Weaviate)
TheologicalEntity collection in Weaviate.CommentaryChunk collection in Weaviate.
LLM Generation (DSPy)
[GEN_46_06_S01]) so the model can cite exact sentences rather than just the whole page.deepseek-chat via OpenRouter) is prompted with a specific DSPy Signature (GillSignature). It is instructed to:
[GEN_46_06_S01]) for every claim.Verification (The Critic)
GroundedGillBot module parses the model's output to ensure citations match the expected Sentence ID format (e.g., [GEN_46_06_S01]).verified: true and returned to the user.graph TD
User([User Query]) --> API[FastAPI /search Endpoint];
subgraph "Retrieval Engine (gill_search.py)"
API --> Analysis{Query Analysis};
Analysis -->|Extract| Entity[Entity Lookup];
Analysis -->|Parse| Verse[Verse Regex];
Entity --> Hybrid[Weaviate Hybrid Search];
Verse --> Hybrid;
Analysis -->|Raw Query| Hybrid;
Hybrid -->|Top 5 Chunks| Chunks[(Commentary Chunks)];
end
subgraph "Generation (bot.py)"
Chunks --> Formatter[Context Formatter];
Formatter -->|Context + Query| DSPy[DSPy Module];
DSPy -->|Prompt| LLM["LLM (DeepSeek-Chat)"];
LLM -->|Answer + Citations| Prediction[Raw Prediction];
end
subgraph "Verification"
Prediction --> Critic[GroundedGillBot Critic];
Critic -->|Verify Citations exist in Context| Check{Valid?};
Check -->|Yes| Verified[Verified Response];
Check -->|No| Error[Unverified / Error];
end
Verified --> Client[Frontend UI];
The system relies on a sophisticated ingestion pipeline to transform raw OCR text into a structured, searchable knowledge graph.
The database consists of two primary collections that form a Knowledge Graph:
CommentaryChunk (The Content)Stores the actual text of the commentary, sliced by Bible verse.
content (Text): The commentary text for a specific verse.verse_ref (Text): Canonical reference, e.g., "MATTHEW 7:27".scan_json (JSON): Coordinates specifying where this text appears in the original physical books (Volume, Page, X/Y boxes) for UI highlighting.sentence_data (JSON, index=False): Array of sentence objects ({sentence_id, text, index}) enabling precise citations (e.g., GEN_46_06_S01).mentions_entity (Cross-Reference): A graph link to TheologicalEntity objects mentioned in this chunk.footnotes (Array): Extracted footnotes resolved from the bottom of the page back to their context.TheologicalEntity (The Graph Nodes)Represents people, places, and concepts to enable "Graph-RAG" (Graph-Augmented Retrieval).
name: The entity name (e.g., "Aben Ezra"). Vectorized for semantic search.description: Short BAML-extracted context. Vectorized for semantic grounding.category: The type of entity (e.g., "BiblicalFigure"). Uses Field Tokenization.biblical_era: (Disambiguation) e.g., "OldTestament" vs "NewTestament".role: (Disambiguation) e.g., "Patriarch" vs "Husband of Mary".normalized_name: Unique ID seed. For ambiguous names (Joseph, Mary), this is combined with Era/Role to generate distinct nodes (e.g., JOSEPH_OT_PATRIARCH vs JOSEPH_NT_HUSBAND).The scripts/ingest.py and normalize_markdown.py scripts handle the transformation:
Normalization (LLM-based)
normalize_markdown.py) to fix 18th-century formatting errors (e.g., specific "Lemma" headers like Ver. 6.) while strictly preserving Hebrew/Greek text.Verse Alignment (Fuzzy Matching)
rapidfuzz to locate the exact start and end of every Bible verse within the continuous commentary text.Graph Construction (BAML)
TheologicalEntity.CommentaryChunk is then linked to these entities, creating a traversable graph (e.g., "Find all commentary mentioning Gamaliel").The ingestion pipeline is orchestrated via Dagster, which manages complex dependencies and parallel execution across the commentary dataset.
The pipeline uses a Multi-Partition approach to handle the scale of the 9-volume collection:
extract_images step. This allows the pipeline to adapt to varying page counts across volumes without manual configuration.The system supports two distinct vectorization backends for generating embeddings:
Client-Side GPU (Ollama) - Default:
ingest.py) generates embeddings locally via a qwen3-embedding model running in an Ollama pod.USE_CLIENT_SIDE_VECTORIZATION=true (default).Server-Side CPU (Transformers) - Fallback:
text2vec-transformers module.USE_CLIENT_SIDE_VECTORIZATION=false.To protect the local infrastructure and stay within OpenRouter API quotas, global concurrency limits are enforced:
openrouter Pool: High-cost LLM nodes (like read_images_baml and normalize_markdown) are tagged with the openrouter concurrency key.dagster.yaml configures a global limit of 5 concurrent tasks for this pool. This prevents Dagster from launching hundreds of simultaneous API calls, maintaining stability even when processing an entire volume.To run the pipeline locally, you must ensure Dagster can securely find its configuration mapping on boot by sourcing your local directory path as the DAGSTER_HOME:
# Windows PowerShell
$env:DAGSTER_HOME = $PWD
uv run dagster dev
# Bash
export DAGSTER_HOME=$(pwd)
uv run dagster dev
Once running, you can access the Dagster UI at http://localhost:3000 to visualize the asset graph, monitor partition status, and trigger backfills for specific volumes.
Note: In addition to ingestion, Dagster globally orchestrates the generation of kjv_fast_lookup.json (via build_kjv_fast_lookup_global), and subsequently targets the synchronization of only the active volume Frontend image assets cleanly into MinIO remote buckets (via upload_to_minio).