|
1 | 1 | # linkml-store
|
2 | 2 |
|
3 |
| -An integration layer for multiple database backends |
| 3 | +An AI-ready data management and integration platform. LinkML-Store |
| 4 | +provides an abstraction layer over multiple different backends |
| 5 | +(including DuckDB, MongoDB, and local filesystems), allowing for |
| 6 | +common query, index, and storage operations. |
4 | 7 |
|
5 |
| -Currently this software is alpha, and has only been tested with DuckDB backends. See the Tutorial for more information. |
| 8 | +For full documentation, see [https://linkml.io/linkml-store/](https://linkml.io/linkml-store/) |
6 | 9 |
|
7 |
| -There is also experimental support for vector-based indexing using OpenAI test embedding via the `llm` library. |
| 10 | +__Warning__ LinkML-Store is still undergoing changes and refactoring, |
| 11 | +APIs and command line options are subject to change! |
8 | 12 |
|
9 |
| -The goals of this project are to provide high level access to data stored in heterogeneous databases, |
10 |
| -with optional schema management using LinkML. |
| 13 | +## Quick Start |
| 14 | + |
| 15 | +Install, add data, query it: |
| 16 | + |
| 17 | +``` |
| 18 | +pip install linkml-store[all] |
| 19 | +linkml-store -d duckdb:///db/my.db -c persons insert data/*.json |
| 20 | +linkml-store -d duckdb:///db/my.db -c persons query -w "occupation: Bricklayer" |
| 21 | +``` |
| 22 | + |
| 23 | +Index it, search it: |
| 24 | + |
| 25 | +``` |
| 26 | +linkml-store -d duckdb:///db/my.db -c persons index -t llm |
| 27 | +linkml-store -d duckdb:///db/my.db -c persons search "all persons employed in construction" |
| 28 | +``` |
| 29 | + |
| 30 | +Validate it: |
| 31 | + |
| 32 | +``` |
| 33 | +linkml-store -d duckdb:///db/my.db -c persons validate |
| 34 | +``` |
| 35 | + |
| 36 | +## Basic usage |
| 37 | + |
| 38 | +* [Command Line](https://linkml.io/linkml-store/tutorials/Command-Line-Tutorial.html) |
| 39 | +* [Python](https://linkml.io/linkml-store/tutorials/Python-Tutorial.html) |
| 40 | +* API |
| 41 | +* Streamlit applications |
| 42 | + |
| 43 | +## Features |
| 44 | + |
| 45 | +### Multiple Adapters |
| 46 | + |
| 47 | +LinkML-Store is designed to work with multiple backends, giving a common abstraction layer |
| 48 | + |
| 49 | +* [MongoDB](https://linkml.io/linkml-store/how-to/Use-MongoDB.html) |
| 50 | +* [DuckDB](https://linkml.io/linkml-store/tutorials/Python-Tutorial.html) |
| 51 | +* [Solr](https://linkml.io/linkml-store/how-to/Query-Solr-using-CLI.html) |
| 52 | +* Filesystem |
| 53 | + |
| 54 | +Coming soon: any RDBMS, any triplestore, Neo4J, HDF5-based stores, ChromaDB/Vector dbs ... |
| 55 | + |
| 56 | +The intent is to give a union of all features of each backend. For |
| 57 | +example, analytic faceted queries are provided for *all* backends, not |
| 58 | +just Solr. |
| 59 | + |
| 60 | +### Composable indexes |
| 61 | + |
| 62 | +Many backends come with their own indexing and search |
| 63 | +schemes. Classically this was Lucene-based indexes, now it is semantic |
| 64 | +search using LLM embeddings. |
| 65 | + |
| 66 | +LinkML store treats indexing as an orthogonal concern - you can |
| 67 | +compose different indexing schemes with different backends. You don't |
| 68 | +need to have a vector database to run embedding search! |
| 69 | + |
| 70 | +See [How to Use-Semantic-Search](https://linkml.io/linkml-store/how-to/Use-Semantic-Search.html) |
| 71 | + |
| 72 | +### Validation |
| 73 | + |
| 74 | +LinkML-Store is backed by [LinkML](https://linkml.io), which allows |
| 75 | +for powerful expressive structural and semantic constraints. |
| 76 | + |
| 77 | +See [Indexing JSON](https://linkml.io/linkml-store/how-to/Index-Phenopackets.html) |
| 78 | + |
| 79 | +and [Referential Integrity](https://linkml.io/linkml-store/how-to/Check-Referential-Integrity.html) |
| 80 | + |
| 81 | + |
| 82 | +## Background |
11 | 83 |
|
12 | 84 | See [these slides](https://docs.google.com/presentation/d/e/2PACX-1vSgtWUNUW0qNO_ZhMAGQ6fYhlXZJjBNMYT0OiZz8DDx8oj7iG9KofRs6SeaMXBBOICGknoyMG2zaHnm/embed?start=false&loop=false&delayms=3000) for more details
|
0 commit comments