Attribution
A Python library for attributing contributions of context sources in Retrieval-Augmented Generation (RAG) systems.
Installation
pip install attribution-lib
Features
- LLM-Based Citation: Prompt construction for citation-aware generation and response decoding (no LLM calls made by the library)
- Embedding-Based Citation: Post-processing attribution via semantic similarity
- Profit Share Calculation: Weighted citation aggregation for fair attribution
Quick Start
Embedding-Based Attribution
from attribution import run_embedding_attribution_pipeline
# Your LLM response (without citations)
response = "The capital of France is Paris. It is known for the Eiffel Tower."
# Context sources with their indices
context = {
1: "Paris is the capital and largest city of France.",
2: "The Eiffel Tower is a famous landmark in Paris.",
}
# Map node indices to server/source names
node_map = {
1: "wikipedia",
2: "travel_guide",
}
# Run the pipeline
result = run_embedding_attribution_pipeline(
response_text=response,
context=context,
node_map=node_map,
)
print(result["cited_response"]) # Response with <cite:X>...</cite> tags
print(result["stats"]) # Citation statistics per server
print(result["profit_share"]) # Normalized contribution scores
LLM-Based Attribution
from attribution import run_llm_attribution_pipeline
# Pre-generated response with citation tags
cited_response = "<cite:[1]>Paris is the capital of France.</cite> <cite:[2]>The Eiffel Tower is iconic.</cite>"
# Map node indices to server names
node_map = {
1: "wikipedia",
2: "travel_guide",
}
result = run_llm_attribution_pipeline(
generated_response=cited_response,
node_map=node_map,
)
print(result["profit_share"])
Constructing Citation Prompts
from attribution import construct_citation_prompt
prompt = construct_citation_prompt(
query="What is the capital of France?",
context={
1: "Paris is the capital of France.",
2: "France is a country in Europe.",
},
additional_instructions="Please cite your sources appropriately." # Optional
)
API Reference
Core Functions
aggregate_server_citations(llm_response, node_to_server_map): Parse citations and count per servercalculate_contribution(stats, k_multi=1.5, k_single=1.0): Calculate normalized profit shares
LLM-Based Citation
construct_citation_prompt(query, context): Build a citation-aware prompt for your LLM (library does not call any LLM)run_llm_attribution_pipeline(generated_response, node_map, ...): Decode LLM response and compute attribution scores
Embedding-Based Citation
auto_cite_response(response, context, server_map, ...): Add citations using embeddingsrun_embedding_attribution_pipeline(response_text, context, node_map, ...): Full embedding pipeline
Configuration
Embedding-Based Settings
DEFAULT_EMBEDDING_MODEL:'BAAI/bge-small-en-v1.5'DEFAULT_SIMILARITY_THRESHOLD:0.75DEFAULT_N_GRAM_SIZE:5
Profit Share Weights
k_multi: Weight for multi-source citations (default: 1.5)k_single: Weight for single-source citations (default: 1.0)
License
MIT License - see LICENSE for details.
Metadata
Release files for attribution-lib 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| attribution_lib-0.4.0.tar.gz | 10.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| attribution_lib-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.2 kB
Release files / attribution_lib-0.4.0.tar.gz
| Download URL | attribution_lib-0.4.0.tar.gz |
|---|---|
| Size | 10.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1ab4c0baf1f5265c1bbae89228cbdf9cd5d523541150472681cf1ffc5a3f7b8d
|
|
BLAKE2b-256 checksum How to use checksums |
7d677cee805cac5ad597c1ec27dff03e7f39026664bb1dc6a7834e2724806db1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.12
|
Release files / attribution_lib-0.4.0-py3-none-any.whl
| Download URL | attribution_lib-0.4.0-py3-none-any.whl |
|---|---|
| Size | 10.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e808444c04ee39f26f8e5de381dc3acb2c3ccbc05bd4652d5e6dcc38a46bd096
|
|
BLAKE2b-256 checksum How to use checksums |
3da1583b6ef8f585b72a8f32de4b87d5a8765242544fd018a8a4f817278e0f6b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.12
|
Security for attribution-lib 0.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.