CocoIndex playground
Change a file. Follow the update.
You write the Python. CocoIndex keeps the index in sync.
Try a change
01 Source
3 filesTry editing the first text line.
02 Python flow
memo=Trueparse()cachedRead the document text.
0 run · 3 reusedsummarize()cachedKeep the first text line.
0 run · 3 reusedembed()cachedCreate a vector from the summary.
0 run · 3 reusedCached result = same function, same inputs.
03 Search index
doc_rowsDocument / summaryLast sync
One row per file · summary + embedding
3 files. An index that is already fresh.
3/3 embeddings reusedYour index is up to date. Change a file to see what runs again.
Sample data. No API calls or setup.
flow.pysimplified example# Simplified flow; helper implementations omitted.@coco.fn(memo=True)async def parse(file): ... @coco.fn(memo=True)async def summarize(doc, *, detail="short"): ... @coco.fn(memo=True)async def embed(text): ... async def process_file(file, target): doc = await parse(file) summary = await summarize(doc, detail="short") vector = await embed(summary) target.declare_row(row=DocRow( name=file.name, summary=summary, embedding=vector, ))The browser simulates parsing, summaries, and embedding reuse. Your Python flow uses real functions and a real target.
Build this with your own data.Open the docs