In the past 2 weeks, we've added support for Knowledge Graphs, Qdrant, Supabase, KTable/LTable, and more LLM providers, along with tons of assorted core/performance improvements - full changelog.
Knowledge Graphs
CocoIndex makes it easy to build and maintain knowledge graphs with continuous updates. The knowledge graph is automatically updated when the source data changes with incremental processing, ensuring that your graph always reflects the latest information.
Users can follow the CocoIndex data flow to collect nodes and relationships. Data from collectors is mapped to graph elements in various types:
Rows from collectors → Nodes in the graph
Rows from collectors → Relationships in the graph (including source and target nodes of the relationship)
By declaring the mapping rules, CocoIndex will map data from collectors to graph nodes and relationships.
Getting started
Documentation: Property Graph Targets
Step-by-step example: Knowledge Graphs for docs
Supporting Qdrant
CocoIndex is officially supporting Qdrant 🎉! Qdrant is the leading open-source vector database designed to handle high-dimensional vectors for performance and massive-scale AI applications. This integration combines high-performance Rust 🦀 stack with real-time ETL to vector store.
Documentation: Qdrant as storage target
Example: Qdrant for docs
We are excited to see this integration!
Supporting Supabase
CocoIndex now supports Supabase as a storage target with simple configuration. Supabase is a modern database platform that combines the best of PostgreSQL with the power of AI. If you don't want to self host any database for the data pipeline, Supabase is a great option. Follow the Database connection spec to get started.
Type system updates
KTable
KTable is a Table type whose first column serves as the key. The row order of a KTable is not preserved. Type of the first column (key column) must be a key type.
In Python, a KTable type is represented by dict[K, V]
. The V
should be a dataclass, representing the value fields of each row. For example,
@dataclass
class Person:
first_name: str
last_name
dob: datetime.date
You can use dict[str, Person]
to represent a KTable, with 4 columns: the key field (Str), first_name
(Str), last_name
(Str), dob
(Date).
LTable
LTable is a Table type whose row order is preserved. LTable has no key column.
In Python, a LTable type is represented by list[R]
, where R
is a dataclass representing a row. For example, you can use list[Person]
to represent a LTable with 3 columns: first_name
(Str), last_name
(Str), dob
(Date).
Learn more about the type system in the documentation.
Supporting more LLM providers in the data flow
CocoIndex now supports Gemini and Anthropic in the data flow. Thanks to @par4m for the contributions!
You could easily switch between the providers by changing the configuration, try it out for some of our existing examples - Text Embedding from PDFs, LLM structured extraction.
Thanks to the Community 🤗🎉!
Welcome new contributors to the CocoIndex community! We are so excited to have you!
@Anush008 from Qdrant
Submitted the PR to support Qdrant storage in #205.
@par4m
Add unit tests for Python to Engine format conversion in #315
Colors to CLI Status for better readability - Super neat! #329, #372
@FranFigueroa
Add unit tests for SplitRecursively function in #348
@lemorage
Beautify show cli command with colorful structured output - Super Sleek! #404
Give it a try by running cocoindex show
!
Full Changelog
Review the detailed changelog here.
We are constantly improving CocoIndex, more features are coming soon! Stay tuned and follow us by starring our GitHub repo.