fix: FalkorDriver database=aaron, build indices on correct graph
This commit is contained in:
@@ -64,7 +64,7 @@ async def lifespan(app: FastAPI):
|
|||||||
llm_client=get_llm_client(),
|
llm_client=get_llm_client(),
|
||||||
embedder=SentenceTransformerEmbedder(),
|
embedder=SentenceTransformerEmbedder(),
|
||||||
cross_encoder=BGERerankerClient(),
|
cross_encoder=BGERerankerClient(),
|
||||||
graph_driver=FalkorDriver(host=FALKORDB_HOST, port=FALKORDB_PORT),
|
graph_driver=FalkorDriver(host=FALKORDB_HOST, port=FALKORDB_PORT, database="aaron"),
|
||||||
)
|
)
|
||||||
await graphiti_instance.build_indices_and_constraints()
|
await graphiti_instance.build_indices_and_constraints()
|
||||||
log.info(f"Graphiti ready — provider: {LLM_PROVIDER}, group: {GROUP_ID}")
|
log.info(f"Graphiti ready — provider: {LLM_PROVIDER}, group: {GROUP_ID}")
|
||||||
@@ -73,12 +73,25 @@ async def lifespan(app: FastAPI):
|
|||||||
|
|
||||||
app = FastAPI(title="Aaron AI Graphiti Sidecar", lifespan=lifespan)
|
app = FastAPI(title="Aaron AI Graphiti Sidecar", lifespan=lifespan)
|
||||||
|
|
||||||
|
class BulkEpisodeItem(BaseModel):
|
||||||
|
name: str
|
||||||
|
content: str
|
||||||
|
source_description: str = ""
|
||||||
|
timestamp: str | None = None
|
||||||
|
|
||||||
|
|
||||||
|
class BulkEpisodeRequest(BaseModel):
|
||||||
|
episodes: list[BulkEpisodeItem]
|
||||||
|
group_id: str | None = None
|
||||||
|
|
||||||
|
|
||||||
class EpisodeRequest(BaseModel):
|
class EpisodeRequest(BaseModel):
|
||||||
name: str
|
name: str
|
||||||
content: str
|
content: str
|
||||||
source_description: str = ""
|
source_description: str = ""
|
||||||
timestamp: str | None = None
|
timestamp: str | None = None
|
||||||
group_id: str | None = None
|
group_id: str | None = None
|
||||||
|
custom_extraction_instructions: str | None = None
|
||||||
|
|
||||||
@app.get("/health")
|
@app.get("/health")
|
||||||
async def health():
|
async def health():
|
||||||
@@ -97,12 +110,39 @@ async def add_episode(req: EpisodeRequest):
|
|||||||
reference_time=ref_time,
|
reference_time=ref_time,
|
||||||
source_description=req.source_description,
|
source_description=req.source_description,
|
||||||
group_id=req.group_id or GROUP_ID,
|
group_id=req.group_id or GROUP_ID,
|
||||||
|
custom_extraction_instructions=req.custom_extraction_instructions,
|
||||||
)
|
)
|
||||||
return {"ok": True}
|
return {"ok": True}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.error(f"Episode ingestion failed: {e}")
|
log.error(f"Episode ingestion failed: {e}")
|
||||||
raise HTTPException(status_code=500, detail=str(e))
|
raise HTTPException(status_code=500, detail=str(e))
|
||||||
|
|
||||||
|
@app.post("/episodes/bulk")
|
||||||
|
async def add_episodes_bulk(req: BulkEpisodeRequest):
|
||||||
|
g = await get_graphiti()
|
||||||
|
from graphiti_core.nodes import EpisodeType
|
||||||
|
from graphiti_core.utils.bulk_utils import RawEpisode
|
||||||
|
raw_episodes = []
|
||||||
|
for ep in req.episodes:
|
||||||
|
ref_time = datetime.fromisoformat(ep.timestamp) if ep.timestamp else datetime.now()
|
||||||
|
raw_episodes.append(RawEpisode(
|
||||||
|
name=ep.name,
|
||||||
|
content=ep.content,
|
||||||
|
source_description=ep.source_description,
|
||||||
|
source=EpisodeType.text,
|
||||||
|
reference_time=ref_time,
|
||||||
|
))
|
||||||
|
try:
|
||||||
|
result = await g.add_episode_bulk(
|
||||||
|
bulk_episodes=raw_episodes,
|
||||||
|
group_id=req.group_id or GROUP_ID,
|
||||||
|
)
|
||||||
|
return {"ok": True, "count": len(raw_episodes)}
|
||||||
|
except Exception as e:
|
||||||
|
log.error(f"Bulk ingestion failed: {e}")
|
||||||
|
raise HTTPException(status_code=500, detail=str(e))
|
||||||
|
|
||||||
|
|
||||||
@app.get("/search")
|
@app.get("/search")
|
||||||
async def search(query: str, limit: int = 8, group_id: str | None = None):
|
async def search(query: str, limit: int = 8, group_id: str | None = None):
|
||||||
g = await get_graphiti()
|
g = await get_graphiti()
|
||||||
|
|||||||
Reference in New Issue
Block a user