Complete guide to integrating Valori with LangChain and LlamaIndex.
# For LangChain
pip install langchain langchain-openai openai
# For LlamaIndex
pip install llama-index llama-index-embeddings-openai llama-index-llms-openai
# Install Valori (when published)
pip install valoricd Valori-Kernel
cargo run --release -p valori-nodeNode will start on http://localhost:3000
from langchain_openai import OpenAIEmbeddings
from valori.adapters import ValoriAdapter, LangChainVectorStore
# Setup
adapter = ValoriAdapter(base_url="http://localhost:3000")
vectorstore = LangChainVectorStore(
adapter=adapter,
embedding=OpenAIEmbeddings()
)
# Add documents
vectorstore.add_texts([
"Valori is deterministic",
"It uses fixed-point math",
])
# Search
docs = vectorstore.similarity_search("deterministic", k=2)from langchain_openai import ChatOpenAI
from langchain.chains import RetrievalQA
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4"),
retriever=vectorstore.as_retriever(),
)
result = qa_chain({"query": "What is Valori?"})
print(result["result"])See: examples/langchain_example.py
Run with:
export OPENAI_API_KEY=your-key
python examples/langchain_example.pyfrom llama_index.core import VectorStoreIndex, StorageContext, Document
from llama_index.embeddings.openai import OpenAIEmbedding
from valori.adapters import ValoriAdapter, LlamaIndexVectorStore
# Setup
adapter = ValoriAdapter(base_url="http://localhost:3000")
vector_store = LlamaIndexVectorStore(adapter=adapter)
storage_context = StorageContext.from_defaults(vector_store=vector_store)
# Create index
documents = [Document(text="Valori is amazing")]
index = VectorStoreIndex.from_documents(
documents,
storage_context=storage_context,
embed_model=OpenAIEmbedding()
)
# Query
query_engine = index.as_query_engine()
response = query_engine.query("Tell me about Valori")from llama_index.llms.openai import OpenAI
chat_engine = index.as_chat_engine(llm=OpenAI(model="gpt-4"))
# Interactive conversation
response1 = chat_engine.chat("What is Valori?")
response2 = chat_engine.chat("Tell me more") # Keeps context!See: examples/llamaindex_example.py
Run with:
export OPENAI_API_KEY=your-key
python examples/llamaindex_example.py# Robot A (ARM Cortex-M)
vectorstore.add_texts(mission_logs)
state_hash_a = adapter.get_state_hash()
# Cloud (x86)
vectorstore_cloud.restore_from_hash(state_hash_a)
# Identical retrieval results!
# Robot B (ARM Cortex-M7)
# Can verify and share same memory# Experiment on Monday
vectorstore.add_texts(research_papers)
results_monday = vectorstore.similarity_search("quantum", k=5)
# Exact same results on Friday
results_friday = vectorstore.similarity_search("quantum", k=5)
assert results_monday == results_friday # ✅ Always true!# Medical AI - results must be reproducible
vectorstore.add_texts(medical_knowledge)
# Query for diagnosis
results = vectorstore.similarity_search(symptoms, k=10)
# Generate cryptographic proof
proof_hash = adapter.get_state_hash()
# Auditors can verify EXACT same results# Before
from langchain_community.vectorstores import FAISS
vectorstore = FAISS.from_texts(texts, embeddings)
# After (just 2 line changes!)
from valori.adapters import ValoriAdapter, LangChainVectorStore
adapter = ValoriAdapter(base_url="http://localhost:3000")
vectorstore = LangChainVectorStore.from_texts(
texts, embeddings, adapter=adapter
)# Before
from langchain_community.vectorstores import Chroma
vectorstore = Chroma.from_texts(texts, embeddings)
# After
from valori.adapters import ValoriAdapter, LangChainVectorStore
adapter = ValoriAdapter(base_url="http://localhost:3000")
vectorstore = LangChainVectorStore.from_texts(
texts, embeddings, adapter=adapter
)# Before
from langchain_community.vectorstores import Pinecone
vectorstore = Pinecone.from_texts(texts, embeddings, index_name="my-index")
# After (no index name needed!)
from valori.adapters import ValoriAdapter, LangChainVectorStore
adapter = ValoriAdapter(base_url="http://localhost:3000")
vectorstore = LangChainVectorStore.from_texts(
texts, embeddings, adapter=adapter
)adapter = ValoriAdapter(
base_url="http://production-server:3000",
api_key="your-secret-key",
max_retries=5,
timeout=30,
)from valori import EmbeddedKernel
# Coming soon - direct kernel access!
kernel = EmbeddedKernel(max_records=10000, dim=1536)| Feature | FAISS | Chroma | Pinecone | Valori |
|---|---|---|---|---|
| LangChain Support | ✅ | ✅ | ✅ | ✅ |
| LlamaIndex Support | ✅ | ✅ | ✅ | ✅ |
| Deterministic | ❌ | ❌ | ❌ | ✅ |
| Crash Recovery | ❌ | Partial | ✅ | ✅ |
| Cross-Arch Identical | ❌ | ❌ | ❌ | ✅ |
| Embedded Support | ❌ | ❌ | ❌ | ✅ |
| Cryptographic Proofs | ❌ | ❌ | ❌ | ✅ |
| Self-Hosted | ✅ | ✅ | ❌ | ✅ |
adapter = ValoriAdapter(
base_url: str, # Valori node URL
api_key: Optional[str], # Optional auth token
embed_fn: Optional[Callable], # Custom embedding function
timeout: int = 30, # Request timeout
max_retries: int = 5, # Retry count
)
# Methods
adapter.search_vector(vector, top_k=4)
adapter.upsert_vector(vector, metadata=None)
adapter.upsert_document(text, metadata=None, embedding=None)vectorstore = LangChainVectorStore(
adapter: ValoriAdapter,
embedding: Embeddings,
)
# Methods (standard LangChain API)
vectorstore.add_texts(texts, metadatas=None)
vectorstore.add_documents(documents)
vectorstore.similarity_search(query, k=4)
vectorstore.similarity_search_with_score(query, k=4)
vectorstore.as_retriever()
# Class methods
LangChainVectorStore.from_texts(texts, embedding, adapter)
LangChainVectorStore.from_documents(documents, embedding, adapter)vector_store = LlamaIndexVectorStore(adapter: ValoriAdapter)
# Methods (standard LlamaIndex API)
vector_store.add(nodes)
vector_store.query(query)
vector_store.delete(ref_doc_id)- Make sure Valori node is running:
cargo run --release -p valori-node - Check URL is correct:
http://localhost:3000
- Pass
embeddingparameter to VectorStore - Or set
embed_fnin ValoriAdapter
- Install dependencies:
pip install langchain langchain-openai - Check Python path includes valori package
- LangChain Example - Complete RAG demo
- LlamaIndex Example - Chat engine demo
- Valori Architecture - How it works
- WAL Guarantees - Crash recovery
Ready to build reproducible AI? Start with the examples! 🚀