Skip to content

RAGWire v1.1.1 — Rename, Directory Ingestion, Custom Metadata & RAG Agent

Choose a tag to compare

@laxmimerit laxmimerit released this 22 Mar 19:03
· 81 commits to main since this release

RAGWire v1.1.1 — Rename, Directory Ingestion, Custom Metadata & RAG Agent

Breaking Changes

  • RAGPipeline renamed to RAGWire — update your imports:
    from ragwire import RAGWire
    rag = RAGWire("config.yaml")

New Features

  • Directory ingestion — ingest an entire folder with one call
    rag.ingest_directory("data/", recursive=True)
  • Progress baringest_documents() now shows a tqdm progress bar automatically
  • Custom metadata YAML — define your own extraction fields without touching code
    # metadata.yaml
    fields:
      - name: organization
        description: "Organization name in lowercase"
      - name: doc_type
        values: ["contract", "policy", "report"]
    # config.yaml
    metadata:
      config_file: "metadata.yaml"
  • Env var substitution in config — use ${VAR} anywhere in config.yaml
    vectorstore:
      api_key: "${QDRANT_API_KEY}"
  • DocumentMetadata accepts extra fields — custom metadata fields no longer raise validation errors
  • created_at timestamp — now correctly set on every chunk at ingestion time

New APIs

API Description
rag.ingest_directory(path, recursive, extensions) Ingest all documents from a folder
MetadataExtractor.from_yaml(llm, path) Load extractor config from a YAML file
MetadataExtractor.build_prompt_from_fields(fields) Auto-build extraction prompt from field definitions

Model Updates

  • OpenAI default LLM → gpt-5.4-nano
  • Groq default model → qwen/qwen3-32b

RAG Agent

New end-to-end example using LangChain create_agent with RAGWire as a retrieval tool — supports single-turn Q&A, multi-turn memory, and structured output.

from langchain.agents import create_agent
from langchain.tools import tool
from langchain_openai import ChatOpenAI
from ragwire import RAGWire

rag = RAGWire("config.yaml")
rag.ingest_directory("data/")

@tool
def search_documents(query: str) -> str:
    """Search the document knowledge base."""
    results = rag.retrieve(query, top_k=5)
    return "\n\n".join(doc.page_content for doc in results)

agent = create_agent(
    model=ChatOpenAI(model="gpt-5.4-nano", temperature=0),
    tools=[search_documents],
    system_prompt="You are a helpful document assistant.",
)

See the RAG Agent guide for the full example.

Documentation

  • New RAG Agent page — single-turn, multi-turn memory, structured output
  • All provider pages updated with agent examples
  • API reference reorganised into Core and Low-level/Advanced sections