Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

epistemic_vectors-0.1.2.tar.gz (14.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

epistemic_vectors-0.1.2-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

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

Hashes for epistemic_vectors-0.1.2.tar.gz
Algorithm Hash digest
SHA256 2c43aad98ea855076725fc032c27c4adc35cf19884329c8dde697558ba2038d7
MD5 77236d9c5803b2ecc3c11679177c1586
BLAKE2b-256 65c228e7a9c94b8706d195d442ebecf14ce018d4a473023c96b7132fe6918dfa

See more details on using hashes here.

File details

Details for the file epistemic_vectors-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for epistemic_vectors-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c39e332e2fe22e3e12171718587657ae392f670af8b62b41a369743bd9831943
MD5 174bf686d5ca0eba7c125ec16ea21938
BLAKE2b-256 0c4f83b1850c0f3141689c187e941c3b23af3107853375d108902b82a74e6c32

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page