diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 39763513..bfa62f7a 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -1,10 +1,16 @@ -site_name: LanceDB Documentation +site_name: LanceDB Docs +repo_url: https://github.com/lancedb/lancedb +repo_name: lancedb/lancedb docs_dir: src theme: name: "material" + logo: assets/logo.png features: - content.code.copy + - content.tabs.link + icon: + repo: fontawesome/brands/github plugins: - search @@ -14,20 +20,33 @@ plugins: paths: [../python] - mkdocs-jupyter -nav: -- Home: index.md -- Basics: basic.md -- Embeddings: embedding.md -- Indexing: ann_indexes.md -- Full-text search: fts.md -- Integrations: integrations.md -- Python API: python.md - markdown_extensions: +- admonition +- pymdownx.superfences +- pymdownx.details - pymdownx.highlight: anchor_linenums: true line_spans: __span pygments_lang_class: true - pymdownx.inlinehilite - pymdownx.snippets -- pymdownx.superfences \ No newline at end of file +- pymdownx.superfences +- pymdownx.tabbed: + alternate_style: true + +nav: +- Home: index.md +- Basics: basic.md +- Embeddings: embedding.md +- Indexing: ann_indexes.md +- Python full-text search: fts.md +- Python integrations: integrations.md +- Python examples: + - YouTube Transcript Search using OpenAI: notebooks/youtube_transcript_search.ipynb + - Documentation QA Bot using LangChain: notebooks/code_qa_bot.ipynb +- API references: + - Python API: python/python.md + - Javascript API: javascript/modules.md + +extra_css: + - styles/global.css \ No newline at end of file diff --git a/docs/src/ann_indexes.md b/docs/src/ann_indexes.md index 205bfa50..050247e5 100644 --- a/docs/src/ann_indexes.md +++ b/docs/src/ann_indexes.md @@ -12,24 +12,38 @@ In the future we will look to automatically create and configure the ANN index. ## Creating an ANN Index -Creating indexes is done via the [create_index](https://lancedb.github.io/lancedb/python/#lancedb.table.LanceTable.create_index) method. +=== "Python" + Creating indexes is done via the [create_index](https://lancedb.github.io/lancedb/python/#lancedb.table.LanceTable.create_index) method. -```python -import lancedb -import numpy as np -uri = "~/.lancedb" -db = lancedb.connect(uri) + ```python + import lancedb + import numpy as np + uri = "~/.lancedb" + db = lancedb.connect(uri) -# Create 10,000 sample vectors -data = [{"vector": row, "item": f"item {i}"} - for i, row in enumerate(np.random.random((10_000, 768)).astype('float32'))] + # Create 10,000 sample vectors + data = [{"vector": row, "item": f"item {i}"} + for i, row in enumerate(np.random.random((10_000, 768)).astype('float32'))] -# Add the vectors to a table -tbl = db.create_table("my_vectors", data=data) + # Add the vectors to a table + tbl = db.create_table("my_vectors", data=data) -# Create and train the index - you need to have enough data in the table for an effective training step -tbl.create_index(num_partitions=256, num_sub_vectors=96) -``` + # Create and train the index - you need to have enough data in the table for an effective training step + tbl.create_index(num_partitions=256, num_sub_vectors=96) + ``` + +=== "Javascript" + ```javascript + const vectordb = require('vectordb') + const db = await vectordb.connect('data/sample-lancedb') + + let data = [] + for (let i = 0; i < 10_000; i++) { + data.push({vector: Array(1536).fill(i), id: `${i}`, content: "", longId: `${i}`},) + } + const table = await db.createTable('vectors', data) + await table.create_index({ type: 'ivf_pq', column: 'vector', num_partitions: 256, num_sub_vectors: 96 }) + ``` Since `create_index` has a training step, it can take a few minutes to finish for large tables. You can control the index creation by providing the following parameters: @@ -57,18 +71,28 @@ There are a couple of parameters that can be used to fine-tune the search: e.g., for 1M vectors divided into 256 partitions, if you're looking for top 20, then refine_factor=200 reranks the whole partition.
Note: refine_factor is only applicable if an ANN index is present. If specified on a table without an ANN index, it is ignored. - -```python -tbl.search(np.random.random((768))) \ - .limit(2) \ - .nprobes(20) \ - .refine_factor(10) \ - .to_df() +=== "Python" + ```python + tbl.search(np.random.random((768))) \ + .limit(2) \ + .nprobes(20) \ + .refine_factor(10) \ + .to_df() vector item score -0 [0.44949695, 0.8444449, 0.06281311, 0.23338133... item 1141 103.575333 -1 [0.48587373, 0.269207, 0.15095535, 0.65531915,... item 3953 108.393867 -``` + 0 [0.44949695, 0.8444449, 0.06281311, 0.23338133... item 1141 103.575333 + 1 [0.48587373, 0.269207, 0.15095535, 0.65531915,... item 3953 108.393867 + ``` + +=== "Javascript" + ```javascript + const results = await table + .search(Array(1536).fill(1.2)) + .limit(2) + .nprobes(20) + .refineFactor(10) + .execute() + ``` The search will return the data requested in addition to the score of each item. @@ -78,18 +102,31 @@ The search will return the data requested in addition to the score of each item. You can further filter the elements returned by a search using a where clause. -```python -tbl.search(np.random.random((768))).where("item != 'item 1141'").to_df() -``` +=== "Python" + ```python + tbl.search(np.random.random((768))).where("item != 'item 1141'").to_df() + ``` + +=== "Javascript" + ```javascript + const results = await table + .search(Array(1536).fill(1.2)) + .where("item != 'item 1141'") + .execute() + ``` ### Projections (select clause) You can select the columns returned by the query using a select clause. -```python -tbl.search(np.random.random((768))).select(["vector"]).to_df() - vector score -0 [0.30928212, 0.022668175, 0.1756372, 0.4911822... 93.971092 -1 [0.2525465, 0.01723831, 0.261568, 0.002007689,... 95.173485 -... -``` +=== "Python" + ```python + tbl.search(np.random.random((768))).select(["vector"]).to_df() + vector score + 0 [0.30928212, 0.022668175, 0.1756372, 0.4911822... 93.971092 + 1 [0.2525465, 0.01723831, 0.261568, 0.002007689,... 95.173485 + ... + ``` + +=== "Javascript" + Projections are not currently supported in the Javascript SDK. diff --git a/docs/src/assets/lancedb_embedded_explanation.png b/docs/src/assets/lancedb_embedded_explanation.png new file mode 100644 index 00000000..cb59c662 Binary files /dev/null and b/docs/src/assets/lancedb_embedded_explanation.png differ diff --git a/docs/src/assets/lancedb_local_data_explanation.png b/docs/src/assets/lancedb_local_data_explanation.png new file mode 100644 index 00000000..9b7cc7cd Binary files /dev/null and b/docs/src/assets/lancedb_local_data_explanation.png differ diff --git a/docs/src/assets/logo.png b/docs/src/assets/logo.png new file mode 100644 index 00000000..5ecddb23 Binary files /dev/null and b/docs/src/assets/logo.png differ diff --git a/docs/src/basic.md b/docs/src/basic.md index 1151dd1c..21638fb8 100644 --- a/docs/src/basic.md +++ b/docs/src/basic.md @@ -1,74 +1,142 @@ # Basic LanceDB Functionality +We'll cover the basics of using LanceDB on your local machine in this section. + +??? info "LanceDB runs embedded on your backend application, so there is no need to run a separate server." + + + +## Installation + +=== "Python" + ```shell + pip install lancedb + ``` + +=== "Javascript" + ```shell + npm install vectordb + ``` + ## How to connect to a database -In local mode, LanceDB stores data in a directory on your local machine. To connect to a local database, you can use the following code: -```python -import lancedb -uri = "~/.lancedb" -db = lancedb.connect(uri) -``` +=== "Python" + ```python + import lancedb + uri = "~/.lancedb" + db = lancedb.connect(uri) + ``` -LanceDB will create the directory if it doesn't exist (including parent directories). + LanceDB will create the directory if it doesn't exist (including parent directories). -If you need a reminder of the uri, use the `db.uri` property. + If you need a reminder of the uri, use the `db.uri` property. + +=== "Javascript" + ```javascript + const lancedb = require("vectordb"); + + const uri = "~./lancedb"; + const db = await lancedb.connect(uri); + ``` + + LanceDB will create the directory if it doesn't exist (including parent directories). + + If you need a reminder of the uri, you can call `db.uri()`. ## How to create a table -To create a table, you can use the following code: -```python -tbl = db.create_table("my_table", - data=[{"vector": [3.1, 4.1], "item": "foo", "price": 10.0}, - {"vector": [5.9, 26.5], "item": "bar", "price": 20.0}]) -``` +=== "Python" + ```python + tbl = db.create_table("my_table", + data=[{"vector": [3.1, 4.1], "item": "foo", "price": 10.0}, + {"vector": [5.9, 26.5], "item": "bar", "price": 20.0}]) + ``` -Under the hood, LanceDB is converting the input data into an Apache Arrow table -and persisting it to disk in [Lance format](github.com/eto-ai/lance). + If the table already exists, LanceDB will raise an error by default. + If you want to overwrite the table, you can pass in `mode="overwrite"` + to the `create_table` method. -If the table already exists, LanceDB will raise an error by default. -If you want to overwrite the table, you can pass in `mode="overwrite"` -to the `create_table` method. + You can also pass in a pandas DataFrame directly: + ```python + import pandas as pd + df = pd.DataFrame([{"vector": [3.1, 4.1], "item": "foo", "price": 10.0}, + {"vector": [5.9, 26.5], "item": "bar", "price": 20.0}]) + tbl = db.create_table("table_from_df", data=df) + ``` -You can also pass in a pandas DataFrame directly: -```python -import pandas as pd -df = pd.DataFrame([{"vector": [3.1, 4.1], "item": "foo", "price": 10.0}, - {"vector": [5.9, 26.5], "item": "bar", "price": 20.0}]) -tbl = db.create_table("table_from_df", data=df) -``` +=== "Javascript" + ```javascript + const tb = await db.createTable("my_table", + data=[{"vector": [3.1, 4.1], "item": "foo", "price": 10.0}, + {"vector": [5.9, 26.5], "item": "bar", "price": 20.0}]) + ``` + +!!! warning + + If the table already exists, LanceDB will raise an error by default. + If you want to overwrite the table, you can pass in `mode="overwrite"` + to the `createTable` function. + +??? info "Under the hood, LanceDB is converting the input data into an Apache Arrow table and persisting it to disk in [Lance format](https://www.github.com/lancedb/lance)." ## How to open an existing table Once created, you can open a table using the following code: -```python -tbl = db.open_table("my_table") -``` -If you forget the name of your table, you can always get a listing of all table names: +=== "Python" + ```python + tbl = db.open_table("my_table") + ``` -```python -db.table_names() -``` + If you forget the name of your table, you can always get a listing of all table names: + + ```python + print(db.table_names()) + ``` + +=== "Javascript" + ```javascript + const tbl = await db.openTable("my_table"); + ``` + + If you forget the name of your table, you can always get a listing of all table names: + + ```javascript + console.log(db.tableNames()); + ``` ## How to add data to a table After a table has been created, you can always add more data to it using -```python -df = pd.DataFrame([{"vector": [1.3, 1.4], "item": "fizz", "price": 100.0}, - {"vector": [9.5, 56.2], "item": "buzz", "price": 200.0}]) -tbl.add(df) -``` +=== "Python" + ```python + df = pd.DataFrame([{"vector": [1.3, 1.4], "item": "fizz", "price": 100.0}, + {"vector": [9.5, 56.2], "item": "buzz", "price": 200.0}]) + tbl.add(df) + ``` + +=== "Javascript" + ```javascript + await tbl.add([vector: [1.3, 1.4], item: "fizz", price: 100.0}, + {vector: [9.5, 56.2], item: "buzz", price: 200.0}]) + ``` ## How to search for (approximate) nearest neighbors Once you've embedded the query, you can find its nearest neighbors using the following code: -```python -tbl.search([100, 100]).limit(2).to_df() -``` +=== "Python" + ```python + tbl.search([100, 100]).limit(2).to_df() + ``` -This returns a pandas DataFrame with the results. + This returns a pandas DataFrame with the results. + +=== "Javascript" + ```javascript + const query = await tbl.search([100, 100]).limit(2).execute(); + ``` ## What's next diff --git a/docs/src/embedding.md b/docs/src/embedding.md index 41096514..7ebadf8f 100644 --- a/docs/src/embedding.md +++ b/docs/src/embedding.md @@ -25,55 +25,88 @@ def embed_func(batch): return [model.encode(sentence) for sentence in batch] ``` +Please note that currently HuggingFace is only supported in the Python SDK. + ### OpenAI example You can also use an external API like OpenAI to generate embeddings -```python -import openai -import os +=== "Python" + ```python + import openai + import os -# Configuring the environment variable OPENAI_API_KEY -if "OPENAI_API_KEY" not in os.environ: - # OR set the key here as a variable - openai.api_key = "sk-..." + # Configuring the environment variable OPENAI_API_KEY + if "OPENAI_API_KEY" not in os.environ: + # OR set the key here as a variable + openai.api_key = "sk-..." -# verify that the API key is working -assert len(openai.Model.list()["data"]) > 0 + # verify that the API key is working + assert len(openai.Model.list()["data"]) > 0 -def embed_func(c): - rs = openai.Embedding.create(input=c, engine="text-embedding-ada-002") - return [record["embedding"] for record in rs["data"]] -``` + def embed_func(c): + rs = openai.Embedding.create(input=c, engine="text-embedding-ada-002") + return [record["embedding"] for record in rs["data"]] + ``` + +=== "Javascript" + ```javascript + const lancedb = require("vectordb"); + + // You need to provide an OpenAI API key + const apiKey = "sk-..." + // The embedding function will create embeddings for the 'text' column + const embedding = new lancedb.OpenAIEmbeddingFunction('text', apiKey) + ``` ## Applying an embedding function -Using an embedding function, you can apply it to raw data -to generate embeddings for each row. +=== "Python" + Using an embedding function, you can apply it to raw data + to generate embeddings for each row. -Say if you have a pandas DataFrame with a `text` column that you want to be embedded, -you can use the [with_embeddings](https://lancedb.github.io/lancedb/python/#lancedb.embeddings.with_embeddings) -function to generate embeddings and add create a combined pyarrow table: + Say if you have a pandas DataFrame with a `text` column that you want to be embedded, + you can use the [with_embeddings](https://lancedb.github.io/lancedb/python/#lancedb.embeddings.with_embeddings) + function to generate embeddings and add create a combined pyarrow table: -```python -import pandas as pd -from lancedb.embeddings import with_embeddings -df = pd.DataFrame([{"text": "pepperoni"}, - {"text": "pineapple"}]) -data = with_embeddings(embed_func, df) + ```python + import pandas as pd + from lancedb.embeddings import with_embeddings -# The output is used to create / append to a table -# db.create_table("my_table", data=data) -``` + df = pd.DataFrame([{"text": "pepperoni"}, + {"text": "pineapple"}]) + data = with_embeddings(embed_func, df) -If your data is in a different column, you can specify the `column` kwarg to `with_embeddings`. + # The output is used to create / append to a table + # db.create_table("my_table", data=data) + ``` -By default, LanceDB calls the function with batches of 1000 rows. This can be configured -using the `batch_size` parameter to `with_embeddings`. + If your data is in a different column, you can specify the `column` kwarg to `with_embeddings`. + + By default, LanceDB calls the function with batches of 1000 rows. This can be configured + using the `batch_size` parameter to `with_embeddings`. + + LanceDB automatically wraps the function with retry and rate-limit logic to ensure the OpenAI + API call is reliable. + +=== "Javascript" + Using an embedding function, you can apply it to raw data + to generate embeddings for each row. + + You can just pass the embedding function created previously and LanceDB will automatically generate + embededings for your data. + + ```javascript + const db = await lancedb.connect("/tmp/lancedb"); + const data = [ + { text: 'pepperoni' }, + { text: 'pineapple' } + ] + + const table = await db.createTable('vectors', data, embedding) + ``` -LanceDB automatically wraps the function with retry and rate-limit logic to ensure the OpenAI -API call is reliable. ## Searching with an embedding function @@ -81,13 +114,25 @@ At inference time, you also need the same embedding function to embed your query It's important that you use the same model / function otherwise the embedding vectors don't belong in the same latent space and your results will be nonsensical. -```python -query = "What's the best pizza topping?" -query_vector = embed_func([query])[0] -tbl.search(query_vector).limit(10).to_df() -``` +=== "Python" + ```python + query = "What's the best pizza topping?" + query_vector = embed_func([query])[0] + tbl.search(query_vector).limit(10).to_df() + ``` + + The above snippet returns a pandas DataFrame with the 10 closest vectors to the query. + +=== "Javascript" + ```javascript + const results = await table + .search('What's the best pizza topping?') + .limit(10) + .execute() + ``` + + The above snippet returns an array of records with the 10 closest vectors to the query. -The above snippet returns a pandas DataFrame with the 10 closest vectors to the query. ## Roadmap diff --git a/docs/src/examples/modal.py b/docs/src/examples/modal.py new file mode 100644 index 00000000..07195639 --- /dev/null +++ b/docs/src/examples/modal.py @@ -0,0 +1,90 @@ +import sys +from modal import Secret, Stub, Image +import lancedb +import re +import pickle +from pathlib import Path + +from langchain.document_loaders import UnstructuredHTMLLoader +from langchain.embeddings import OpenAIEmbeddings +from langchain.text_splitter import RecursiveCharacterTextSplitter +from langchain.vectorstores import LanceDB +from langchain.llms import OpenAI +from langchain.chains import RetrievalQA + +lancedb_image = Image.debian_slim().pip_install("lancedb", "langchain", "openai", "tiktoken") + +stub = Stub( + name="example-langchain-lancedb", + image=lancedb_image, + secrets=[Secret.from_name("my-openai-secret")], +) + +docsearch = None +docs_path = Path("docs.pkl") +db_path = Path("lancedb") +doc_cache = [] + +def get_document_title(document): + m = str(document.metadata["source"]) + title = re.findall("pandas.documentation(.*).html", m) + if title[0] is not None: + return(title[0]) + return '' + +def store_docs(): + docs = [] + + if not docs_path.exists(): + for p in Path("./pandas.documentation").rglob("*.html"): + if p.is_dir(): + continue + loader = UnstructuredHTMLLoader(p) + raw_document = loader.load() + + m = {} + m["title"] = get_document_title(raw_document[0]) + m["version"] = "2.0rc0" + raw_document[0].metadata = raw_document[0].metadata | m + raw_document[0].metadata["source"] = str(raw_document[0].metadata["source"]) + docs = docs + raw_document + + with docs_path.open("wb") as fh: + pickle.dump(docs, fh) + else: + with docs_path.open("rb") as fh: + docs = pickle.load(fh) + + doc_cache = docs + +def qanda_langchain(query): + store_docs() + + text_splitter = RecursiveCharacterTextSplitter( + chunk_size=1000, + chunk_overlap=200, + ) + documents = text_splitter.split_documents(doc_cache) + embeddings = OpenAIEmbeddings() + + db = lancedb.connect(db_path) + table = db.create_table("pandas_docs", data=[ + {"vector": embeddings.embed_query("Hello World")} + ], mode="overwrite") + docsearch = LanceDB.from_documents(documents, embeddings, connection=table) + qa = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=docsearch.as_retriever()) + return qa.run(query) + +@stub.function() +def cli(query: str, show_sources: bool = False): + answer = qanda_langchain(query) + # Terminal codes for pretty-printing. + bold, end = "\033[1m", "\033[0m" + + print(f"🦜 {bold}ANSWER:{end}") + print(answer) + if show_sources: + print(f"🔗 {bold}SOURCES:{end}") + for text in sources: + print(text) + print("----") diff --git a/docs/src/index.md b/docs/src/index.md index 515ea78d..7d720e38 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -1,6 +1,6 @@ # Welcome to LanceDB's Documentation -LanceDB is an open-source database for vector-search built with persistent storage, which greatly simplifies retrivial, filtering and management of embeddings. +LanceDB is an open-source database for vector-search built with persistent storage, which greatly simplifies retrevial, filtering and management of embeddings. The key features of LanceDB include: @@ -8,37 +8,52 @@ The key features of LanceDB include: * Store, query and filter vectors, metadata and multi-modal data (text, images, videos, point clouds, and more). -* Native Python and Javascript/Typescript support (coming soon). +* Native Python and Javascript/Typescript support. * Zero-copy, automatic versioning, manage versions of your data without needing extra infrastructure. * Ecosystem integrations with [LangChain 🦜️🔗](https://python.langchain.com/en/latest/modules/indexes/vectorstores/examples/lanecdb.html), [LlamaIndex 🦙](https://gpt-index.readthedocs.io/en/latest/examples/vector_stores/LanceDBIndexDemo.html), Apache-Arrow, Pandas, Polars, DuckDB and more on the way. -LanceDB's core is written in Rust 🦀 and is built using Lance, an open-source columnar format designed for performant ML workloads. +LanceDB's core is written in Rust 🦀 and is built using Lance, an open-source columnar format designed for performant ML workloads. +## Quick Start -## Installation +=== "Python" + ```shell + pip install lancedb + ``` -```shell -pip install lancedb -``` + ```python + import lancedb -## Quickstart + uri = "/tmp/lancedb" + db = lancedb.connect(uri) + table = db.create_table("my_table", + data=[{"vector": [3.1, 4.1], "item": "foo", "price": 10.0}, + {"vector": [5.9, 26.5], "item": "bar", "price": 20.0}]) + result = table.search([100, 100]).limit(2).to_df() + ``` -```python -import lancedb +=== "Javascript" + ```shell + npm install vectordb + ``` -db = lancedb.connect(".") -table = db.create_table("my_table", - data=[{"vector": [3.1, 4.1], "item": "foo", "price": 10.0}, - {"vector": [5.9, 26.5], "item": "bar", "price": 20.0}]) -result = table.search([100, 100]).limit(2).to_df() -``` + ```javascript + const lancedb = require("vectordb"); + + const uri = "/tmp/lancedb"; + const db = await lancedb.connect(uri); + const table = await db.createTable("my_table", + [{ id: 1, vector: [3.1, 4.1], item: "foo", price: 10.0 }, + { id: 2, vector: [5.9, 26.5], item: "bar", price: 20.0 }]) + const results = await table.search([100, 100]).limit(2).execute(); + ``` ## Complete Demos We will be adding completed demo apps built using LanceDB. -- [YouTube Transcript Search](../../notebooks/youtube_transcript_search.ipynb) +- [YouTube Transcript Search](notebooks/youtube_transcript_search.ipynb) ## Documentation Quick Links diff --git a/docs/src/javascript/.nojekyll b/docs/src/javascript/.nojekyll new file mode 100644 index 00000000..e2ac6616 --- /dev/null +++ b/docs/src/javascript/.nojekyll @@ -0,0 +1 @@ +TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. \ No newline at end of file diff --git a/docs/src/javascript/README.md b/docs/src/javascript/README.md new file mode 100644 index 00000000..4f9cd732 --- /dev/null +++ b/docs/src/javascript/README.md @@ -0,0 +1,51 @@ +vectordb / [Exports](modules.md) + +# LanceDB + +A JavaScript / Node.js library for [LanceDB](https://github.com/lancedb/lancedb). + +## Installation + +```bash +npm install vectordb +``` + +## Usage + +### Basic Example + +```javascript +const lancedb = require('vectordb'); +const db = lancedb.connect(''); +const table = await db.openTable('my_table'); +const query = await table.search([0.1, 0.3]).setLimit(20).execute(); +console.log(results); +``` + +The [examples](./examples) folder contains complete examples. + +## Development + +The LanceDB javascript is built with npm: + +```bash +npm run tsc +``` + +Run the tests with + +```bash +npm test +``` + +To run the linter and have it automatically fix all errors + +```bash +npm run lint -- --fix +``` + +To build documentation + +```bash +npx typedoc --plugin typedoc-plugin-markdown --out ../docs/src/javascript src/index.ts +``` diff --git a/docs/src/javascript/classes/Connection.md b/docs/src/javascript/classes/Connection.md new file mode 100644 index 00000000..092e94ab --- /dev/null +++ b/docs/src/javascript/classes/Connection.md @@ -0,0 +1,211 @@ +[vectordb](../README.md) / [Exports](../modules.md) / Connection + +# Class: Connection + +A connection to a LanceDB database. + +## Table of contents + +### Constructors + +- [constructor](Connection.md#constructor) + +### Properties + +- [\_db](Connection.md#_db) +- [\_uri](Connection.md#_uri) + +### Accessors + +- [uri](Connection.md#uri) + +### Methods + +- [createTable](Connection.md#createtable) +- [createTableArrow](Connection.md#createtablearrow) +- [openTable](Connection.md#opentable) +- [tableNames](Connection.md#tablenames) + +## Constructors + +### constructor + +• **new Connection**(`db`, `uri`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `db` | `any` | +| `uri` | `string` | + +#### Defined in + +[index.ts:46](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L46) + +## Properties + +### \_db + +• `Private` `Readonly` **\_db**: `any` + +#### Defined in + +[index.ts:44](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L44) + +___ + +### \_uri + +• `Private` `Readonly` **\_uri**: `string` + +#### Defined in + +[index.ts:43](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L43) + +## Accessors + +### uri + +• `get` **uri**(): `string` + +#### Returns + +`string` + +#### Defined in + +[index.ts:51](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L51) + +## Methods + +### createTable + +▸ **createTable**(`name`, `data`): `Promise`<[`Table`](Table.md)<`number`[]\>\> + +Creates a new Table and initialize it with new data. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `name` | `string` | The name of the table. | +| `data` | `Record`<`string`, `unknown`\>[] | Non-empty Array of Records to be inserted into the Table | + +#### Returns + +`Promise`<[`Table`](Table.md)<`number`[]\>\> + +#### Defined in + +[index.ts:91](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L91) + +▸ **createTable**<`T`\>(`name`, `data`, `embeddings`): `Promise`<[`Table`](Table.md)<`T`\>\> + +Creates a new Table and initialize it with new data. + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `name` | `string` | The name of the table. | +| `data` | `Record`<`string`, `unknown`\>[] | Non-empty Array of Records to be inserted into the Table | +| `embeddings` | [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)<`T`\> | An embedding function to use on this Table | + +#### Returns + +`Promise`<[`Table`](Table.md)<`T`\>\> + +#### Defined in + +[index.ts:99](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L99) + +___ + +### createTableArrow + +▸ **createTableArrow**(`name`, `table`): `Promise`<[`Table`](Table.md)<`number`[]\>\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `table` | `Table`<`any`\> | + +#### Returns + +`Promise`<[`Table`](Table.md)<`number`[]\>\> + +#### Defined in + +[index.ts:109](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L109) + +___ + +### openTable + +▸ **openTable**(`name`): `Promise`<[`Table`](Table.md)<`number`[]\>\> + +Open a table in the database. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `name` | `string` | The name of the table. | + +#### Returns + +`Promise`<[`Table`](Table.md)<`number`[]\>\> + +#### Defined in + +[index.ts:67](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L67) + +▸ **openTable**<`T`\>(`name`, `embeddings`): `Promise`<[`Table`](Table.md)<`T`\>\> + +Open a table in the database. + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `name` | `string` | The name of the table. | +| `embeddings` | [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)<`T`\> | An embedding function to use on this Table | + +#### Returns + +`Promise`<[`Table`](Table.md)<`T`\>\> + +#### Defined in + +[index.ts:74](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L74) + +___ + +### tableNames + +▸ **tableNames**(): `Promise`<`string`[]\> + +Get the names of all tables in the database. + +#### Returns + +`Promise`<`string`[]\> + +#### Defined in + +[index.ts:58](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L58) diff --git a/docs/src/javascript/classes/OpenAIEmbeddingFunction.md b/docs/src/javascript/classes/OpenAIEmbeddingFunction.md new file mode 100644 index 00000000..d6087ed3 --- /dev/null +++ b/docs/src/javascript/classes/OpenAIEmbeddingFunction.md @@ -0,0 +1,105 @@ +[vectordb](../README.md) / [Exports](../modules.md) / OpenAIEmbeddingFunction + +# Class: OpenAIEmbeddingFunction + +An embedding function that automatically creates vector representation for a given column. + +## Implements + +- [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)<`string`\> + +## Table of contents + +### Constructors + +- [constructor](OpenAIEmbeddingFunction.md#constructor) + +### Properties + +- [\_modelName](OpenAIEmbeddingFunction.md#_modelname) +- [\_openai](OpenAIEmbeddingFunction.md#_openai) +- [sourceColumn](OpenAIEmbeddingFunction.md#sourcecolumn) + +### Methods + +- [embed](OpenAIEmbeddingFunction.md#embed) + +## Constructors + +### constructor + +• **new OpenAIEmbeddingFunction**(`sourceColumn`, `openAIKey`, `modelName?`) + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `sourceColumn` | `string` | `undefined` | +| `openAIKey` | `string` | `undefined` | +| `modelName` | `string` | `'text-embedding-ada-002'` | + +#### Defined in + +[embedding/openai.ts:21](https://github.com/lancedb/lancedb/blob/31dab97/node/src/embedding/openai.ts#L21) + +## Properties + +### \_modelName + +• `Private` `Readonly` **\_modelName**: `string` + +#### Defined in + +[embedding/openai.ts:19](https://github.com/lancedb/lancedb/blob/31dab97/node/src/embedding/openai.ts#L19) + +___ + +### \_openai + +• `Private` `Readonly` **\_openai**: `any` + +#### Defined in + +[embedding/openai.ts:18](https://github.com/lancedb/lancedb/blob/31dab97/node/src/embedding/openai.ts#L18) + +___ + +### sourceColumn + +• **sourceColumn**: `string` + +The name of the column that will be used as input for the Embedding Function. + +#### Implementation of + +[EmbeddingFunction](../interfaces/EmbeddingFunction.md).[sourceColumn](../interfaces/EmbeddingFunction.md#sourcecolumn) + +#### Defined in + +[embedding/openai.ts:50](https://github.com/lancedb/lancedb/blob/31dab97/node/src/embedding/openai.ts#L50) + +## Methods + +### embed + +▸ **embed**(`data`): `Promise`<`number`[][]\> + +Creates a vector representation for the given values. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `data` | `string`[] | + +#### Returns + +`Promise`<`number`[][]\> + +#### Implementation of + +[EmbeddingFunction](../interfaces/EmbeddingFunction.md).[embed](../interfaces/EmbeddingFunction.md#embed) + +#### Defined in + +[embedding/openai.ts:38](https://github.com/lancedb/lancedb/blob/31dab97/node/src/embedding/openai.ts#L38) diff --git a/docs/src/javascript/classes/Query.md b/docs/src/javascript/classes/Query.md new file mode 100644 index 00000000..da1fae5e --- /dev/null +++ b/docs/src/javascript/classes/Query.md @@ -0,0 +1,299 @@ +[vectordb](../README.md) / [Exports](../modules.md) / Query + +# Class: Query + +A builder for nearest neighbor queries for LanceDB. + +## Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | `number`[] | + +## Table of contents + +### Constructors + +- [constructor](Query.md#constructor) + +### Properties + +- [\_columns](Query.md#_columns) +- [\_embeddings](Query.md#_embeddings) +- [\_filter](Query.md#_filter) +- [\_limit](Query.md#_limit) +- [\_metricType](Query.md#_metrictype) +- [\_nprobes](Query.md#_nprobes) +- [\_query](Query.md#_query) +- [\_queryVector](Query.md#_queryvector) +- [\_refineFactor](Query.md#_refinefactor) +- [\_tbl](Query.md#_tbl) + +### Methods + +- [execute](Query.md#execute) +- [filter](Query.md#filter) +- [limit](Query.md#limit) +- [metricType](Query.md#metrictype) +- [nprobes](Query.md#nprobes) +- [refineFactor](Query.md#refinefactor) + +## Constructors + +### constructor + +• **new Query**<`T`\>(`tbl`, `query`, `embeddings?`) + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | `number`[] | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `tbl` | `any` | +| `query` | `T` | +| `embeddings?` | [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)<`T`\> | + +#### Defined in + +[index.ts:241](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L241) + +## Properties + +### \_columns + +• `Private` `Optional` `Readonly` **\_columns**: `string`[] + +#### Defined in + +[index.ts:236](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L236) + +___ + +### \_embeddings + +• `Private` `Optional` `Readonly` **\_embeddings**: [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)<`T`\> + +#### Defined in + +[index.ts:239](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L239) + +___ + +### \_filter + +• `Private` `Optional` **\_filter**: `string` + +#### Defined in + +[index.ts:237](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L237) + +___ + +### \_limit + +• `Private` **\_limit**: `number` + +#### Defined in + +[index.ts:233](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L233) + +___ + +### \_metricType + +• `Private` `Optional` **\_metricType**: [`MetricType`](../enums/MetricType.md) + +#### Defined in + +[index.ts:238](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L238) + +___ + +### \_nprobes + +• `Private` **\_nprobes**: `number` + +#### Defined in + +[index.ts:235](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L235) + +___ + +### \_query + +• `Private` `Readonly` **\_query**: `T` + +#### Defined in + +[index.ts:231](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L231) + +___ + +### \_queryVector + +• `Private` `Optional` **\_queryVector**: `number`[] + +#### Defined in + +[index.ts:232](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L232) + +___ + +### \_refineFactor + +• `Private` `Optional` **\_refineFactor**: `number` + +#### Defined in + +[index.ts:234](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L234) + +___ + +### \_tbl + +• `Private` `Readonly` **\_tbl**: `any` + +#### Defined in + +[index.ts:230](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L230) + +## Methods + +### execute + +▸ **execute**<`T`\>(): `Promise`<`T`[]\> + +Execute the query and return the results as an Array of Objects + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | `Record`<`string`, `unknown`\> | + +#### Returns + +`Promise`<`T`[]\> + +#### Defined in + +[index.ts:301](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L301) + +___ + +### filter + +▸ **filter**(`value`): [`Query`](Query.md)<`T`\> + +A filter statement to be applied to this query. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `value` | `string` | A filter in the same format used by a sql WHERE clause. | + +#### Returns + +[`Query`](Query.md)<`T`\> + +#### Defined in + +[index.ts:284](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L284) + +___ + +### limit + +▸ **limit**(`value`): [`Query`](Query.md)<`T`\> + +Sets the number of results that will be returned + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `value` | `number` | number of results | + +#### Returns + +[`Query`](Query.md)<`T`\> + +#### Defined in + +[index.ts:257](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L257) + +___ + +### metricType + +▸ **metricType**(`value`): [`Query`](Query.md)<`T`\> + +The MetricType used for this Query. + +**`See`** + +MetricType for the different options + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `value` | [`MetricType`](../enums/MetricType.md) | The metric to the. | + +#### Returns + +[`Query`](Query.md)<`T`\> + +#### Defined in + +[index.ts:293](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L293) + +___ + +### nprobes + +▸ **nprobes**(`value`): [`Query`](Query.md)<`T`\> + +The number of probes used. A higher number makes search more accurate but also slower. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `value` | `number` | The number of probes used. | + +#### Returns + +[`Query`](Query.md)<`T`\> + +#### Defined in + +[index.ts:275](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L275) + +___ + +### refineFactor + +▸ **refineFactor**(`value`): [`Query`](Query.md)<`T`\> + +Refine the results by reading extra elements and re-ranking them in memory. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `value` | `number` | refine factor to use in this query. | + +#### Returns + +[`Query`](Query.md)<`T`\> + +#### Defined in + +[index.ts:266](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L266) diff --git a/docs/src/javascript/classes/Table.md b/docs/src/javascript/classes/Table.md new file mode 100644 index 00000000..5a28755f --- /dev/null +++ b/docs/src/javascript/classes/Table.md @@ -0,0 +1,215 @@ +[vectordb](../README.md) / [Exports](../modules.md) / Table + +# Class: Table + +## Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | `number`[] | + +## Table of contents + +### Constructors + +- [constructor](Table.md#constructor) + +### Properties + +- [\_embeddings](Table.md#_embeddings) +- [\_name](Table.md#_name) +- [\_tbl](Table.md#_tbl) + +### Accessors + +- [name](Table.md#name) + +### Methods + +- [add](Table.md#add) +- [create\_index](Table.md#create_index) +- [overwrite](Table.md#overwrite) +- [search](Table.md#search) + +## Constructors + +### constructor + +• **new Table**<`T`\>(`tbl`, `name`) + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | `number`[] | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `tbl` | `any` | +| `name` | `string` | + +#### Defined in + +[index.ts:121](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L121) + +• **new Table**<`T`\>(`tbl`, `name`, `embeddings`) + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | `number`[] | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `tbl` | `any` | | +| `name` | `string` | | +| `embeddings` | [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)<`T`\> | An embedding function to use when interacting with this table | + +#### Defined in + +[index.ts:127](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L127) + +## Properties + +### \_embeddings + +• `Private` `Optional` `Readonly` **\_embeddings**: [`EmbeddingFunction`](../interfaces/EmbeddingFunction.md)<`T`\> + +#### Defined in + +[index.ts:119](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L119) + +___ + +### \_name + +• `Private` `Readonly` **\_name**: `string` + +#### Defined in + +[index.ts:118](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L118) + +___ + +### \_tbl + +• `Private` `Readonly` **\_tbl**: `any` + +#### Defined in + +[index.ts:117](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L117) + +## Accessors + +### name + +• `get` **name**(): `string` + +#### Returns + +`string` + +#### Defined in + +[index.ts:134](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L134) + +## Methods + +### add + +▸ **add**(`data`): `Promise`<`number`\> + +Insert records into this Table. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `data` | `Record`<`string`, `unknown`\>[] | Records to be inserted into the Table | + +#### Returns + +`Promise`<`number`\> + +The number of rows added to the table + +#### Defined in + +[index.ts:152](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L152) + +___ + +### create\_index + +▸ **create_index**(`indexParams`): `Promise`<`any`\> + +Create an ANN index on this Table vector index. + +**`See`** + +VectorIndexParams. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `indexParams` | `IvfPQIndexConfig` | The parameters of this Index, | + +#### Returns + +`Promise`<`any`\> + +#### Defined in + +[index.ts:171](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L171) + +___ + +### overwrite + +▸ **overwrite**(`data`): `Promise`<`number`\> + +Insert records into this Table, replacing its contents. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `data` | `Record`<`string`, `unknown`\>[] | Records to be inserted into the Table | + +#### Returns + +`Promise`<`number`\> + +The number of rows added to the table + +#### Defined in + +[index.ts:162](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L162) + +___ + +### search + +▸ **search**(`query`): [`Query`](Query.md)<`T`\> + +Creates a search query to find the nearest neighbors of the given search term + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `query` | `T` | The query search term | + +#### Returns + +[`Query`](Query.md)<`T`\> + +#### Defined in + +[index.ts:142](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L142) diff --git a/docs/src/javascript/enums/MetricType.md b/docs/src/javascript/enums/MetricType.md new file mode 100644 index 00000000..adced6a2 --- /dev/null +++ b/docs/src/javascript/enums/MetricType.md @@ -0,0 +1,36 @@ +[vectordb](../README.md) / [Exports](../modules.md) / MetricType + +# Enumeration: MetricType + +Distance metrics type. + +## Table of contents + +### Enumeration Members + +- [Cosine](MetricType.md#cosine) +- [L2](MetricType.md#l2) + +## Enumeration Members + +### Cosine + +• **Cosine** = ``"cosine"`` + +Cosine distance + +#### Defined in + +[index.ts:341](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L341) + +___ + +### L2 + +• **L2** = ``"l2"`` + +Euclidean distance + +#### Defined in + +[index.ts:336](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L336) diff --git a/docs/src/javascript/enums/WriteMode.md b/docs/src/javascript/enums/WriteMode.md new file mode 100644 index 00000000..32a5c244 --- /dev/null +++ b/docs/src/javascript/enums/WriteMode.md @@ -0,0 +1,30 @@ +[vectordb](../README.md) / [Exports](../modules.md) / WriteMode + +# Enumeration: WriteMode + +## Table of contents + +### Enumeration Members + +- [Append](WriteMode.md#append) +- [Overwrite](WriteMode.md#overwrite) + +## Enumeration Members + +### Append + +• **Append** = ``"append"`` + +#### Defined in + +[index.ts:326](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L326) + +___ + +### Overwrite + +• **Overwrite** = ``"overwrite"`` + +#### Defined in + +[index.ts:325](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L325) diff --git a/docs/src/javascript/interfaces/EmbeddingFunction.md b/docs/src/javascript/interfaces/EmbeddingFunction.md new file mode 100644 index 00000000..85962de9 --- /dev/null +++ b/docs/src/javascript/interfaces/EmbeddingFunction.md @@ -0,0 +1,60 @@ +[vectordb](../README.md) / [Exports](../modules.md) / EmbeddingFunction + +# Interface: EmbeddingFunction + +An embedding function that automatically creates vector representation for a given column. + +## Type parameters + +| Name | +| :------ | +| `T` | + +## Implemented by + +- [`OpenAIEmbeddingFunction`](../classes/OpenAIEmbeddingFunction.md) + +## Table of contents + +### Properties + +- [embed](EmbeddingFunction.md#embed) +- [sourceColumn](EmbeddingFunction.md#sourcecolumn) + +## Properties + +### embed + +• **embed**: (`data`: `T`[]) => `Promise`<`number`[][]\> + +#### Type declaration + +▸ (`data`): `Promise`<`number`[][]\> + +Creates a vector representation for the given values. + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `data` | `T`[] | + +##### Returns + +`Promise`<`number`[][]\> + +#### Defined in + +[embedding/embedding_function.ts:27](https://github.com/lancedb/lancedb/blob/31dab97/node/src/embedding/embedding_function.ts#L27) + +___ + +### sourceColumn + +• **sourceColumn**: `string` + +The name of the column that will be used as input for the Embedding Function. + +#### Defined in + +[embedding/embedding_function.ts:22](https://github.com/lancedb/lancedb/blob/31dab97/node/src/embedding/embedding_function.ts#L22) diff --git a/docs/src/javascript/modules.md b/docs/src/javascript/modules.md new file mode 100644 index 00000000..2ac99034 --- /dev/null +++ b/docs/src/javascript/modules.md @@ -0,0 +1,61 @@ +[vectordb](README.md) / Exports + +# vectordb + +## Table of contents + +### Enumerations + +- [MetricType](enums/MetricType.md) +- [WriteMode](enums/WriteMode.md) + +### Classes + +- [Connection](classes/Connection.md) +- [OpenAIEmbeddingFunction](classes/OpenAIEmbeddingFunction.md) +- [Query](classes/Query.md) +- [Table](classes/Table.md) + +### Interfaces + +- [EmbeddingFunction](interfaces/EmbeddingFunction.md) + +### Type Aliases + +- [VectorIndexParams](modules.md#vectorindexparams) + +### Functions + +- [connect](modules.md#connect) + +## Type Aliases + +### VectorIndexParams + +Ƭ **VectorIndexParams**: `IvfPQIndexConfig` + +#### Defined in + +[index.ts:224](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L224) + +## Functions + +### connect + +▸ **connect**(`uri`): `Promise`<[`Connection`](classes/Connection.md)\> + +Connect to a LanceDB instance at the given URI + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `uri` | `string` | The uri of the database. | + +#### Returns + +`Promise`<[`Connection`](classes/Connection.md)\> + +#### Defined in + +[index.ts:34](https://github.com/lancedb/lancedb/blob/31dab97/node/src/index.ts#L34) diff --git a/notebooks/code_qa_bot.ipynb b/docs/src/notebooks/code_qa_bot.ipynb similarity index 100% rename from notebooks/code_qa_bot.ipynb rename to docs/src/notebooks/code_qa_bot.ipynb diff --git a/notebooks/diffusiondb/datagen.py b/docs/src/notebooks/diffusiondb/datagen.py similarity index 100% rename from notebooks/diffusiondb/datagen.py rename to docs/src/notebooks/diffusiondb/datagen.py diff --git a/notebooks/diffusiondb/requirements.txt b/docs/src/notebooks/diffusiondb/requirements.txt similarity index 100% rename from notebooks/diffusiondb/requirements.txt rename to docs/src/notebooks/diffusiondb/requirements.txt diff --git a/notebooks/multimodal_search.ipynb b/docs/src/notebooks/multimodal_search.ipynb similarity index 100% rename from notebooks/multimodal_search.ipynb rename to docs/src/notebooks/multimodal_search.ipynb diff --git a/notebooks/youtube_transcript_search.ipynb b/docs/src/notebooks/youtube_transcript_search.ipynb similarity index 100% rename from notebooks/youtube_transcript_search.ipynb rename to docs/src/notebooks/youtube_transcript_search.ipynb diff --git a/docs/src/python.md b/docs/src/python/python.md similarity index 100% rename from docs/src/python.md rename to docs/src/python/python.md diff --git a/docs/src/styles/global.css b/docs/src/styles/global.css new file mode 100644 index 00000000..d511a964 --- /dev/null +++ b/docs/src/styles/global.css @@ -0,0 +1,6 @@ +:root { + --md-primary-fg-color: #625eff; + --md-primary-fg-color--dark: #4338ca; + --md-text-font: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --md-code-font: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} \ No newline at end of file diff --git a/node/README.md b/node/README.md index 5e0a4838..9302cf5b 100644 --- a/node/README.md +++ b/node/README.md @@ -41,3 +41,9 @@ To run the linter and have it automatically fix all errors ```bash npm run lint -- --fix ``` + +To build documentation + +```bash +npx typedoc --plugin typedoc-plugin-markdown --out ../docs/src/javascript src/index.ts +``` \ No newline at end of file diff --git a/node/package-lock.json b/node/package-lock.json index 10a62727..ee17adbf 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -32,6 +32,8 @@ "temp": "^0.9.4", "ts-node": "^10.9.1", "ts-node-dev": "^2.0.0", + "typedoc": "^0.24.7", + "typedoc-plugin-markdown": "^3.15.3", "typescript": "*" } }, @@ -642,6 +644,12 @@ "node": ">=8" } }, + "node_modules/ansi-sequence-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", + "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", + "dev": true + }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -2284,6 +2292,27 @@ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -2782,6 +2811,12 @@ "json5": "lib/cli.js" } }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, "node_modules/just-extend": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", @@ -2870,12 +2905,30 @@ "node": ">=10" } }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -3096,6 +3149,12 @@ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, "node_modules/nise": { "version": "5.1.4", "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz", @@ -3604,6 +3663,18 @@ "node": ">=8" } }, + "node_modules/shiki": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.2.tgz", + "integrity": "sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==", + "dev": true, + "dependencies": { + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -4064,6 +4135,63 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typedoc": { + "version": "0.24.7", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.7.tgz", + "integrity": "sha512-zzfKDFIZADA+XRIp2rMzLe9xZ6pt12yQOhCr7cD7/PBTjhPmMyMvGrkZ2lPNJitg3Hj1SeiYFNzCsSDrlpxpKw==", + "dev": true, + "dependencies": { + "lunr": "^2.3.9", + "marked": "^4.3.0", + "minimatch": "^9.0.0", + "shiki": "^0.14.1" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 14.14" + }, + "peerDependencies": { + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x" + } + }, + "node_modules/typedoc-plugin-markdown": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.15.3.tgz", + "integrity": "sha512-idntFYu3vfaY3eaD+w9DeRd0PmNGqGuNLKihPU9poxFGnATJYGn9dPtEhn2QrTdishFMg7jPXAhos+2T6YCWRQ==", + "dev": true, + "dependencies": { + "handlebars": "^4.7.7" + }, + "peerDependencies": { + "typedoc": ">=0.24.0" + } + }, + "node_modules/typedoc/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/typedoc/node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/typescript": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", @@ -4085,6 +4213,19 @@ "node": ">=8" } }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -4115,6 +4256,18 @@ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true }, + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "dev": true + }, + "node_modules/vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", + "dev": true + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4175,6 +4328,12 @@ "node": ">=0.10.0" } }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, "node_modules/wordwrapjs": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", @@ -4767,6 +4926,12 @@ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, + "ansi-sequence-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", + "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", + "dev": true + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -5983,6 +6148,19 @@ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -6324,6 +6502,12 @@ "minimist": "^1.2.0" } }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, "just-extend": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", @@ -6394,12 +6578,24 @@ "yallist": "^4.0.0" } }, + "lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, + "marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true + }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -6564,6 +6760,12 @@ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, "nise": { "version": "5.1.4", "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz", @@ -6908,6 +7110,18 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "shiki": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.2.tgz", + "integrity": "sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==", + "dev": true, + "requires": { + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" + } + }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -7236,6 +7450,47 @@ "is-typed-array": "^1.1.9" } }, + "typedoc": { + "version": "0.24.7", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.7.tgz", + "integrity": "sha512-zzfKDFIZADA+XRIp2rMzLe9xZ6pt12yQOhCr7cD7/PBTjhPmMyMvGrkZ2lPNJitg3Hj1SeiYFNzCsSDrlpxpKw==", + "dev": true, + "requires": { + "lunr": "^2.3.9", + "marked": "^4.3.0", + "minimatch": "^9.0.0", + "shiki": "^0.14.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "typedoc-plugin-markdown": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.15.3.tgz", + "integrity": "sha512-idntFYu3vfaY3eaD+w9DeRd0PmNGqGuNLKihPU9poxFGnATJYGn9dPtEhn2QrTdishFMg7jPXAhos+2T6YCWRQ==", + "dev": true, + "requires": { + "handlebars": "^4.7.7" + } + }, "typescript": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", @@ -7247,6 +7502,13 @@ "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==" }, + "uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true + }, "unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -7274,6 +7536,18 @@ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true }, + "vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "dev": true + }, + "vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", + "dev": true + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -7316,6 +7590,12 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, "wordwrapjs": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", diff --git a/node/package.json b/node/package.json index 894769fa..484d937e 100644 --- a/node/package.json +++ b/node/package.json @@ -38,11 +38,13 @@ "eslint-plugin-n": "^15.7.0", "eslint-plugin-promise": "^6.1.1", "mocha": "^10.2.0", - "sinon": "^15.1.0", "openai": "^3.2.1", + "sinon": "^15.1.0", "temp": "^0.9.4", "ts-node": "^10.9.1", "ts-node-dev": "^2.0.0", + "typedoc": "^0.24.7", + "typedoc-plugin-markdown": "^3.15.3", "typescript": "*" }, "dependencies": {