{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Tigris\n", "\n", "> [Tigris](htttps://tigrisdata.com) is an open source Serverless NoSQL Database and Search Platform designed to simplify building high-performance vector search applications.\n", "> `Tigris` eliminates the infrastructure complexity of managing, operating, and synchronizing multiple tools, allowing you to focus on building great applications instead." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook guides you how to use Tigris as your VectorStore" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Pre requisites**\n", "1. An OpenAI account. You can sign up for an account [here](https://platform.openai.com/)\n", "2. [Sign up for a free Tigris account](https://console.preview.tigrisdata.cloud). Once you have signed up for the Tigris account, create a new project called `vectordemo`. Next, make a note of the *Uri* for the region you've created your project in, the **clientId** and **clientSecret**. You can get all this information from the **Application Keys** section of the project." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's first install our dependencies:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "!pip install tigrisdb openapi-schema-pydantic openai tiktoken" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will load the `OpenAI` api key and `Tigris` credentials in our environment" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "import os\n", "import getpass\n", "\n", "os.environ[\"OPENAI_API_KEY\"] = getpass.getpass(\"OpenAI API Key:\")\n", "os.environ[\"TIGRIS_PROJECT\"] = getpass.getpass(\"Tigris Project Name:\")\n", "os.environ[\"TIGRIS_CLIENT_ID\"] = getpass.getpass(\"Tigris Client Id:\")\n", "os.environ[\"TIGRIS_CLIENT_SECRET\"] = getpass.getpass(\"Tigris Client Secret:\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "from langchain.embeddings.openai import OpenAIEmbeddings\n", "from langchain.text_splitter import CharacterTextSplitter\n", "from langchain.vectorstores import Tigris\n", "from langchain.document_loaders import TextLoader" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Initialize Tigris vector store\n", "Let's import our test dataset:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "loader = TextLoader(\"../../../state_of_the_union.txt\")\n", "documents = loader.load()\n", "text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)\n", "docs = text_splitter.split_documents(documents)\n", "\n", "embeddings = OpenAIEmbeddings()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "vector_store = Tigris.from_documents(docs, embeddings, index_name=\"my_embeddings\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Similarity Search" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "query = \"What did the president say about Ketanji Brown Jackson\"\n", "found_docs = vector_store.similarity_search(query)\n", "print(found_docs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Similarity Search with score (vector distance)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "query = \"What did the president say about Ketanji Brown Jackson\"\n", "result = vector_store.similarity_search_with_score(query)\n", "for doc, score in result:\n", " print(f\"document={doc}, score={score}\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.6" } }, "nbformat": 4, "nbformat_minor": 4 }