Tigris는 고성능 vector search 애플리케이션 구축을 단순화하도록 설계된 오픈소스 Serverless NoSQL Database 및 Search Platform입니다. Tigris는 여러 도구를 관리, 운영 및 동기화하는 인프라 복잡성을 제거하여 훌륭한 애플리케이션 구축에 집중할 수 있도록 합니다.
이 노트북은 Tigris를 VectorStore로 사용하는 방법을 안내합니다 사전 요구사항
  1. OpenAI 계정. 여기에서 계정을 등록할 수 있습니다
  2. 무료 Tigris 계정 가입. Tigris 계정에 가입한 후 vectordemo라는 새 프로젝트를 생성하세요. 다음으로 프로젝트를 생성한 region의 Uri, clientIdclientSecret을 기록해 두세요. 이 모든 정보는 프로젝트의 Application Keys 섹션에서 확인할 수 있습니다.
먼저 dependencies를 설치하겠습니다:
pip install -qU  tigrisdb openapi-schema-pydantic langchain-openai langchain-community tiktoken
환경에 OpenAI API key와 Tigris credentials를 로드하겠습니다
import getpass
import os

if "OPENAI_API_KEY" not in os.environ:
    os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:")
if "TIGRIS_PROJECT" not in os.environ:
    os.environ["TIGRIS_PROJECT"] = getpass.getpass("Tigris Project Name:")
if "TIGRIS_CLIENT_ID" not in os.environ:
    os.environ["TIGRIS_CLIENT_ID"] = getpass.getpass("Tigris Client Id:")
if "TIGRIS_CLIENT_SECRET" not in os.environ:
    os.environ["TIGRIS_CLIENT_SECRET"] = getpass.getpass("Tigris Client Secret:")
from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import Tigris
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import CharacterTextSplitter

Tigris vector store 초기화

테스트 dataset을 import하겠습니다:
loader = TextLoader("../../../state_of_the_union.txt")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

embeddings = OpenAIEmbeddings()
vector_store = Tigris.from_documents(docs, embeddings, index_name="my_embeddings")
query = "What did the president say about Ketanji Brown Jackson"
found_docs = vector_store.similarity_search(query)
print(found_docs)

score를 포함한 Similarity Search (vector distance)

query = "What did the president say about Ketanji Brown Jackson"
result = vector_store.similarity_search_with_score(query)
for doc, score in result:
    print(f"document={doc}, score={score}")

Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I