Epistemic Vectors — a provenance-native primitive for retrieval pipelines. Drop-in Epistemic Layer for LangChain, LlamaIndex, and Mem0.
Project description
epistemic-vectors
A provenance-native primitive for retrieval pipelines — the Epistemic Layer drops in between vector-store retrieval and generation in any RAG stack and attaches an Epistemic Vector to every returned document.
What semantic embeddings did for meaning, Epistemic Vectors do for belief state. Five typed slots per document — revision_state, provenance_depth, consistency_score, authority, freshness — derived deterministically from a belief graph. No LLM, no free-text classifier.
Install
pip install epistemic-vectors[langchain] # LangChain adapter
pip install epistemic-vectors[llamaindex] # LlamaIndex adapter
pip install epistemic-vectors[mem0] # Mem0 adapter
pip install epistemic-vectors[all] # all three
Quickstart — LangChain
from agm_r import KnowledgeGraph, assert_belief, revise
from epistemic_layer.adapters.langchain import EpistemicRetriever
# (1) Build a belief graph
kg = KnowledgeGraph()
kg = assert_belief(kg, term="pluto_classification", source_id="doc_a",
claim_text="Pluto is the ninth planet",
timestamp="1930-02-18")
kg = revise(kg, old_source_id="doc_a", new_source_id="doc_b",
new_claim_text="Pluto is a dwarf planet",
timestamp="2006-08-24")
# (2) Wrap any LangChain retriever (e.g. Chroma) with the Epistemic Layer
retriever = EpistemicRetriever(base_retriever=chroma_retriever, kg=kg)
# (3) Docs now carry an Epistemic Vector in their metadata
for d in retriever.get_relevant_documents("what is Pluto?"):
print(d.metadata["epistemic_vector"])
# {"source_id": "doc_b", "revision_state": "asserted", ...}
Filter or re-rank by vector slots:
retriever = EpistemicRetriever(
base_retriever=chroma_retriever, kg=kg,
filter_by=lambda ev: ev.revision_state != "retracted",
rerank_by=lambda ev: 0.5 * ev.freshness + 0.5 * ev.consistency_score,
)
Quickstart — LlamaIndex
from epistemic_layer.adapters.llamaindex import EpistemicRetriever
retriever = EpistemicRetriever(base_retriever=vector_retriever, kg=kg)
nodes = retriever.retrieve("what is Pluto?")
for nws in nodes:
ev = nws.node.metadata["epistemic_vector"]
Quickstart — Mem0
from mem0 import Memory
from epistemic_layer.adapters.mem0 import EpistemicMemory
base = Memory()
em = EpistemicMemory(base=base, kg=kg)
em.add(messages="Pluto is a dwarf planet", user_id="alice",
metadata={"source_id": "doc_b"})
results = em.search(query="what is Pluto?", user_id="alice")
for r in results["results"]:
print(r["epistemic_vector"])
The primitive itself (no adapter)
Use epistemic_vector() directly against any agm_r.KnowledgeGraph:
from agm_r import KnowledgeGraph, epistemic_vector
ev = epistemic_vector(kg, "doc_b")
print(ev)
# EV(doc_b, asserted, prov=0, cons=1.00, auth=1.00, fresh=1.00)
Links
- AGM-R (Python reference implementation):
agm_r/ - License: MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file epistemic_vectors-0.1.2.tar.gz.
File metadata
- Download URL: epistemic_vectors-0.1.2.tar.gz
- Upload date:
- Size: 14.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c43aad98ea855076725fc032c27c4adc35cf19884329c8dde697558ba2038d7
|
|
| MD5 |
77236d9c5803b2ecc3c11679177c1586
|
|
| BLAKE2b-256 |
65c228e7a9c94b8706d195d442ebecf14ce018d4a473023c96b7132fe6918dfa
|
File details
Details for the file epistemic_vectors-0.1.2-py3-none-any.whl.
File metadata
- Download URL: epistemic_vectors-0.1.2-py3-none-any.whl
- Upload date:
- Size: 16.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c39e332e2fe22e3e12171718587657ae392f670af8b62b41a369743bd9831943
|
|
| MD5 |
174bf686d5ca0eba7c125ec16ea21938
|
|
| BLAKE2b-256 |
0c4f83b1850c0f3141689c187e941c3b23af3107853375d108902b82a74e6c32
|