citation
Formats citations and validates source attribution for answers generated from multiple document sources (ChromaDB and web search). Use when adding source references to generated answers, validating citation accuracy, or ensuring quality of source attribution across different source types.
When & Why to Use This Skill
This Claude skill provides a robust framework for formatting citations and validating source attribution across diverse data streams, including internal ChromaDB knowledge bases and external web searches. By automating source detection and performing rigorous quality checks, it ensures that AI-generated answers are accurate, transparent, and grounded in verifiable data, significantly enhancing the reliability of RAG (Retrieval-Augmented Generation) workflows and preventing hallucinations.
Use Cases
- Enterprise Knowledge Retrieval: Automatically citing specific company documents, FAQs, and product catalogs in response to customer or internal queries to maintain data provenance.
- Web-Based Research: Generating professional research reports with standardized Markdown hyperlinks for external web sources, allowing users to easily verify the credibility of information.
- Hallucination Mitigation: Performing automated validation checks to ensure that generated content is strictly grounded in the provided source documents before the final answer is delivered.
- Multi-Source Synthesis: Consolidating citations from mixed environments—such as combining internal proprietary troubleshooting guides with external technical documentation—into a unified and consistent format.
| name | citation |
|---|---|
| description | Formats citations and validates source attribution for answers generated from multiple document sources (ChromaDB and web search). Use when adding source references to generated answers, validating citation accuracy, or ensuring quality of source attribution across different source types. |
Citation and Source Attribution
Instructions
Format citations and validate source attribution using functions in components/generator.py. Handles both internal knowledge base (ChromaDB) sources and external web search sources with appropriate citation formats.
Default workflow:
# After generating answer, format citations based on source type
citations = format_citations(documents)
validated = validate_citations(answer, documents)
Key capabilities:
- Multi-source citation formatting - Handle both ChromaDB and web search sources
- Source type detection - Automatically detect document source type
- Quality validation - Verify citations match provided documents
- Unified output format - Consistent citation structure regardless of source
Source Types and Citation Formats
ChromaDB Sources
Documents from internal knowledge base (catalog, faq, troubleshooting collections):
Document structure:
{
'document': 'product_id: SKU001 | name: TechBook Pro...',
'collection': 'catalog', # 'faq' or 'troubleshooting'
'metadata': {
'source': 'techmart_catalog.csv',
'row_index': 0
}
}
Citation format:
- "Based on our product catalog..."
- "According to our FAQ..."
- "From our troubleshooting guide..."
- Sources:
["techmart_catalog.csv", "techmart_faq.csv"] - Collections:
["catalog", "faq"]
Web Search Sources
Documents from external web search (Exa API):
Document structure:
{
'document': '<web page content>',
'collection': 'web_search',
'source': 'https://techradar.com/article', # URL
'title': 'Best Gaming Laptops 2024',
'author': 'John Doe',
'published_date': '2024-03-15'
}
Citation format:
- Markdown hyperlinks:
[Title](URL) - Include publication date when available
- Sources:
["https://techradar.com/article", "https://pcmag.com/review"] - Collections:
["web_search"]
Examples
Example 1: ChromaDB citations only
# Input documents
documents = [
{'collection': 'catalog', 'metadata': {'source': 'techmart_catalog.csv'}},
{'collection': 'faq', 'metadata': {'source': 'techmart_faq.csv'}}
]
# Output
{
'sources': ['techmart_catalog.csv', 'techmart_faq.csv'],
'collections_used': ['catalog', 'faq'],
'source_types': ['chromadb', 'chromadb'],
'citation_format': 'internal_kb'
}
Example 2: Web search citations only
# Input documents
documents = [
{
'collection': 'web_search',
'source': 'https://techradar.com/best-laptops',
'title': 'Best Gaming Laptops 2024'
},
{
'collection': 'web_search',
'source': 'https://pcmag.com/laptop-review',
'title': 'Gaming Laptop Reviews'
}
]
# Output
{
'sources': [
'https://techradar.com/best-laptops',
'https://pcmag.com/laptop-review'
],
'collections_used': ['web_search'],
'source_types': ['web', 'web'],
'citation_format': 'web_urls',
'formatted_citations': [
'[Best Gaming Laptops 2024](https://techradar.com/best-laptops)',
'[Gaming Laptop Reviews](https://pcmag.com/laptop-review)'
]
}
Example 3: Mixed sources (ChromaDB + Web)
# Input documents
documents = [
{'collection': 'catalog', 'metadata': {'source': 'techmart_catalog.csv'}},
{
'collection': 'web_search',
'source': 'https://example.com/article',
'title': 'External Review'
}
]
# Output
{
'sources': [
'techmart_catalog.csv',
'https://example.com/article'
],
'collections_used': ['catalog', 'web_search'],
'source_types': ['chromadb', 'web'],
'citation_format': 'mixed',
'formatted_citations': [
'Product Catalog',
'[External Review](https://example.com/article)'
]
}
Example 4: Citation validation
# Validate that generated answer only uses information from provided documents
answer = "The TechBook Pro costs $1,499"
documents = [
{'document': 'product_id: SKU001 | price: 1499.0 | name: TechBook Pro'}
]
validation = validate_citations(answer, documents)
# Returns: {'valid': True, 'grounded': True, 'hallucination_detected': False}
Usage in Generator Agent
The citation skill is used AFTER generation to format and validate sources:
# Step 1: Generate answer (generation_skill)
answer_result = generate_answer(query, documents)
# Step 2: Format citations (citation_skill)
citation_result = format_citations(documents)
# Step 3: Combine results
final_result = {
'answer': answer_result['answer'],
'sources': citation_result['sources'],
'collections_used': citation_result['collections_used'],
'source_types': citation_result['source_types'],
'formatted_citations': citation_result.get('formatted_citations', [])
}
Quality Checks
The citation skill performs these quality validations:
- Source completeness - All documents have valid source information
- Format consistency - Citations follow correct format for source type
- URL validation - Web URLs are properly formed
- Collection verification - Collection names are valid
- No hallucination - Answer content is grounded in provided documents
Critical Implementation Notes
- Source type detection: Check
collection == 'web_search'to identify web sources - Unique sources: Deduplicate sources list (multiple docs from same CSV/URL)
- Empty documents: Handle gracefully when no documents provided
- Metadata extraction: Safely handle missing metadata fields (author, published_date)
- Markdown formatting: Web citations use
[Title](URL)format for proper rendering