Typesense는 오픈소스 인메모리 검색 엔진으로, 자체 호스팅하거나 Typesense Cloud에서 실행할 수 있습니다. Typesense는 전체 인덱스를 RAM에 저장하고(디스크에 백업) 성능에 중점을 두며, 사용 가능한 옵션을 단순화하고 좋은 기본값을 설정하여 즉시 사용 가능한 개발자 경험을 제공하는 데 중점을 둡니다. 또한 속성 기반 필터링과 vector 쿼리를 결합하여 가장 관련성 높은 문서를 가져올 수 있습니다.
이 노트북은 Typesense를 VectorStore로 사용하는 방법을 보여줍니다. 먼저 의존성을 설치해봅시다:
pip install -qU  typesense openapi-schema-pydantic langchain-openai langchain-community tiktoken
OpenAIEmbeddings를 사용하려면 OpenAI API Key를 가져와야 합니다.
import getpass
import os

if "OPENAI_API_KEY" not in os.environ:
    os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:")
from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import Typesense
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import CharacterTextSplitter
테스트 데이터셋을 가져와봅시다:
loader = TextLoader("../../how_to/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()
docsearch = Typesense.from_documents(
    docs,
    embeddings,
    typesense_client_params={
        "host": "localhost",  # Use xxx.a1.typesense.net for Typesense Cloud
        "port": "8108",  # Use 443 for Typesense Cloud
        "protocol": "http",  # Use https for Typesense Cloud
        "typesense_api_key": "xyz",
        "typesense_collection_name": "lang-chain",
    },
)
query = "What did the president say about Ketanji Brown Jackson"
found_docs = docsearch.similarity_search(query)
print(found_docs[0].page_content)

Retriever로서의 Typesense

Typesense는 다른 모든 vector store와 마찬가지로 cosine similarity를 사용하는 LangChain Retriever입니다.
retriever = docsearch.as_retriever()
retriever
query = "What did the president say about Ketanji Brown Jackson"
retriever.invoke(query)[0]

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