ai-rag-pipeline

Build RAG (Retrieval Augmented Generation) pipelines with web search and LLMs. Tools: Tavily Search, Exa Search, Exa Answer, Claude, GPT-4, Gemini via…

INSTALLATION
npx skills add https://github.com/inference-sh/skills --skill ai-rag-pipeline
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

Install the belt CLI skill: npx skills add belt-sh/cli

AI RAG Pipeline

Build RAG (Retrieval Augmented Generation) pipelines via inference.sh CLI.

Quick Start

Requires inference.sh CLI (belt). Install instructions

belt login

Simple RAG: Search + LLM

SEARCH=$(belt app run tavily/search-assistant --input '{"query": "latest AI developments 2024"}')

belt app run openrouter/claude-sonnet-45 --input "{

"prompt": "Based on this research, summarize the key trends: $SEARCH"

}"

## What is RAG?

RAG combines:

1. **Retrieval**: Fetch relevant information from external sources

2. **Augmentation**: Add retrieved context to the prompt

3. **Generation**: LLM generates response using the context

This produces more accurate, up-to-date, and verifiable AI responses.

## RAG Pipeline Patterns

### Pattern 1: Simple Search + Answer

[User Query] -> [Web Search] -> [LLM with Context] -> [Answer]

### Pattern 2: Multi-Source Research

[Query] -> [Multiple Searches] -> [Aggregate] -> [LLM Analysis] -> [Report]

### Pattern 3: Extract + Process

[URLs] -> [Content Extraction] -> [Chunking] -> [LLM Summary] -> [Output]

## Available Tools

### Search Tools

| Tool | App ID | Best For |

|------|--------|----------|

| Tavily Search | `tavily/search-assistant` | AI-powered search with answers |

| Exa Search | `exa/search` | Neural search, semantic matching |

| Exa Answer | `exa/answer` | Direct factual answers |

### Extraction Tools

| Tool | App ID | Best For |

|------|--------|----------|

| Tavily Extract | `tavily/extract` | Clean content from URLs |

| Exa Extract | `exa/extract` | Analyze web content |

### LLM Tools

| Model | App ID | Best For |

|-------|--------|----------|

| Claude Sonnet 4.5 | `openrouter/claude-sonnet-45` | Complex analysis |

| Claude Haiku 4.5 | `openrouter/claude-haiku-45` | Fast processing |

| GPT-4o | `openrouter/gpt-4o` | General purpose |

| Gemini 2.5 Pro | `openrouter/gemini-25-pro` | Long context |

## Pipeline Examples

### Basic RAG Pipeline

1. Search for information

SEARCH_RESULT=$(belt app run tavily/search-assistant --input '{

"query": "What are the latest breakthroughs in quantum computing 2024?"

}')

2. Generate grounded response

belt app run openrouter/claude-sonnet-45 --input "{

\"prompt\": \"You are a research assistant. Based on the following search results, provide a comprehensive summary with citations.

Search Results:

$SEARCH_RESULT

Provide a well-structured summary with source citations.\"

}"


### Multi-Source Research

Search multiple sources

TAVILY=$(belt app run tavily/search-assistant --input '{"query": "electric vehicle market trends 2024"}')

EXA=$(belt app run exa/search --input '{"query": "EV market analysis latest reports"}')

Combine and analyze

belt app run openrouter/claude-sonnet-45 --input "{

\"prompt\": \"Analyze these research results and identify common themes and contradictions.

Source 1 (Tavily):

$TAVILY

Source 2 (Exa):

$EXA

Provide a balanced analysis with sources.\"

}"


### URL Content Analysis

1. Extract content from specific URLs

CONTENT=$(belt app run tavily/extract --input '{

"urls": [

"https://example.com/research-paper",

"https://example.com/industry-report"

]

}')

2. Analyze extracted content

belt app run openrouter/claude-sonnet-45 --input "{

\"prompt\": \"Analyze these documents and extract key insights:

$CONTENT

Provide:

  1. Key findings
  1. Data points
  1. Recommendations\"

}"


### Fact-Checking Pipeline

Claim to verify

CLAIM="AI will replace 50% of jobs by 2030"

1. Search for evidence

EVIDENCE=$(belt app run tavily/search-assistant --input "{

\"query\": \"$CLAIM evidence studies research\"

}")

2. Verify claim

belt app run openrouter/claude-sonnet-45 --input "{

\"prompt\": \"Fact-check this claim: '$CLAIM'

Based on the following evidence:

$EVIDENCE

Provide:

  1. Verdict (True/False/Partially True/Unverified)
  1. Supporting evidence
  1. Contradicting evidence
  1. Sources\"

}"


### Research Report Generator

TOPIC="Impact of generative AI on creative industries"

1. Initial research

OVERVIEW=$(belt app run tavily/search-assistant --input "{\"query\": \"$TOPIC overview\"}")

STATISTICS=$(belt app run exa/search --input "{\"query\": \"$TOPIC statistics data\"}")

OPINIONS=$(belt app run tavily/search-assistant --input "{\"query\": \"$TOPIC expert opinions\"}")

2. Generate comprehensive report

belt app run openrouter/claude-sonnet-45 --input "{

\"prompt\": \"Generate a comprehensive research report on: $TOPIC

Research Data:

== Overview ==

$OVERVIEW

== Statistics ==

$STATISTICS

== Expert Opinions ==

$OPINIONS

Format as a professional report with:

  • Executive Summary
  • Key Findings
  • Data Analysis
  • Expert Perspectives
  • Conclusion
  • Sources\"

}"


### Quick Answer with Sources

Use Exa Answer for direct factual questions

belt app run exa/answer --input '{

"question": "What is the current market cap of NVIDIA?"

}'


## Best Practices

### 1. Query Optimization

Bad: Too vague

"AI news"

Good: Specific and contextual

"latest developments in large language models January 2024"


### 2. Context Management

Summarize long search results before sending to LLM

SEARCH=$(belt app run tavily/search-assistant --input '{"query": "..."}')

If too long, summarize first

SUMMARY=$(belt app run openrouter/claude-haiku-45 --input "{

\"prompt\": \"Summarize these search results in bullet points: $SEARCH\"

}")

Then use summary for analysis

belt app run openrouter/claude-sonnet-45 --input "{

\"prompt\": \"Based on this research summary, provide insights: $SUMMARY\"

}"


### 3. Source Attribution

Always ask the LLM to cite sources:

belt app run openrouter/claude-sonnet-45 --input '{

"prompt": "... Always cite sources in [Source Name](URL) format."

}'


### 4. Iterative Research

First pass: broad search

INITIAL=$(belt app run tavily/search-assistant --input '{"query": "topic overview"}')

Second pass: dive deeper based on findings

DEEP=$(belt app run tavily/search-assistant --input '{"query": "specific aspect from initial search"}')


## Pipeline Templates

### Agent Research Tool

#!/bin/bash

research.sh - Reusable research function

research() {

local query="$1"

# Search

local results=$(belt app run tavily/search-assistant --input "{\"query\": \"$query\"}")

# Analyze

belt app run openrouter/claude-haiku-45 --input "{

\"prompt\": \"Summarize: $results\"

}"

}

research "your query here"


## Related Skills

Web search tools

npx skills add inference-sh/skills@web-search

LLM models

npx skills add inference-sh/skills@llm-models

Content pipelines

npx skills add inference-sh/skills@ai-content-pipeline

Full platform skill

npx skills add inference-sh/skills@infsh-cli

BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card