To my business and identification
from datetime import date, datetime
import os
import json
import math
from pathlib import Path
import ollama
=== PATHS ===
BASEDIR = Path(file).parent.parent # Personal-AI root
SYSTEMDIR = BASEDIR / "00-System"
IDENTITYDIR = BASEDIR / "01-Identity-Vault"
BUSINESSDIR = BASEDIR / "02-Business"
KNOWLEDGEDIR = BASEDIR / "03-Knowledge"
TASKSDIR = BASEDIR / "04-Tasks"
LOGSDIR = BASEDIR / "05-Logs"
RULESFILE = SYSTEMDIR / "AI-Rules.md"
EMBEDCACHEFILE = SYSTEMDIR / "embed_cache.json"
Embedding model
EMBEDMODEL = "nomic-embed-text"
CHATMODEL = "llama3.1"
MAXFILES = 5
CONTENTPREVIEW_CHARS = 3000
Ensure log folder exists
LOGSDIR.mkdir(parents=True, existok=True)
=== LOAD RULES ===
with open(RULES_FILE, "r", encoding="utf-8") as f:
rules = f.read()
=== EMBEDDING HELPERS ===
def getembedding(text: str) -> list[float]:
"""Get embedding vector from Ollama. Uses the modern embed API."""
try:
# Prefer modern batch-capable API
response = ollama.embed(model=EMBEDMODEL, input=text)
return response["embeddings"][0]
except Exception:
# Fallback to older API if needed
response = ollama.embeddings(model=EMBED_MODEL, prompt=text)
return response["embedding"]
def cosine_similarity(a: list[