Швидкий тест, щоб перевірити, чи працює LangChain з Kai
Анотація
У попередній статті ми досліджували, як використовувати MongoDBAtlasVectorSearch
LangChain з SingleStore Kai через простий приклад. У цій статті ми розглянемо ще один приклад, цього разу на основі репозиторію LangChain на GitHub. Результати знову показують, що MongoDBAtlasVectorSearch
добре працює з SingleStore Kai.
Файл з ноутбуком, використаний у цій статті, доступний на GitHub.
Вступ
У рамках нашої поточної оцінки SingleStore Kai з різними AI фреймворками, ця стаття використовує ще один приклад для тестування MongoDBAtlasVectorSearch
LangChain з SingleStore Kai.
Створення облікового запису SingleStore Cloud
У попередній статті показано кроки для створення безкоштовного облікового запису SingleStore Cloud. Ми використовуватимемо Standard Tier і стандартні назви для групи робочих просторів і робочого простору. Також ми ввімкнемо SingleStore Kai.
Ми збережемо наш OpenAI API ключ у сховищі секретів за допомогою OPENAI_API_KEY
.
Імпорт ноутбука
Ми завантажимо ноутбук з GitHub.
З лівої навігаційної панелі в порталі SingleStore Cloud ми виберемо DEVELOP > Data Studio.
У правому верхньому куті веб-сторінки виберемо New Notebook > Import From File. Використаємо майстер для знаходження та імпорту ноутбука, завантаженого з GitHub.
Запуск ноутбука
Ноутбук адаптовано з репозиторію LangChain GitHub.
Перш за все, ми переконаємося, що OpenAI API ключ доступний і налаштуємо модель для вбудовування:
os.environ["OPENAI_API_KEY"] = get_secret("OPENAI_API_KEY")
embeddings = OpenAIEmbeddings(
model = "text-embedding-3-small"
)
Далі ми отримаємо підключення до Kai за допомогою connection_url_kai
, який є змінною середовища, що вже вказує на екземпляр Kai, і налаштуємо базу даних, колекцію та назву векторного індексу, як показано нижче:
client = MongoClient(connection_url_kai)
DB_NAME = "langchain_test_db"
COLLECTION_NAME = "langchain_test_vectorstores"
ATLAS_VECTOR_SEARCH_INDEX_NAME = "langchain_test_index_vectorstores"
MONGODB_COLLECTION = client[DB_NAME][COLLECTION_NAME]
vector_store = MongoDBAtlasVectorSearch(
collection = MONGODB_COLLECTION,
embedding = embeddings,
index_name = ATLAS_VECTOR_SEARCH_INDEX_NAME,
relevance_score_fn = "dotProduct",
)
Тепер створимо векторний індекс:
MONGODB_COLLECTION.create_index(
[("embedding", "vector")],
name = ATLAS_VECTOR_SEARCH_INDEX_NAME,
kaiIndexOptions = {
"index_type": "AUTO",
"metric_type": "DOT_PRODUCT",
"dimensions": 1536
}
)
Далі ми підготуємо та завантажимо документи в SingleStore Kai:
document_1 = Document(
page_content = "I had chocalate chip pancakes and scrambled eggs for breakfast this morning.",
metadata = {"source": "tweet"},
)
document_2 = Document(
page_content = "The weather forecast for tomorrow is cloudy and overcast, with a high of 62 degrees.",
metadata = {"source": "news"},
)
document_3 = Document(
page_content = "Building an exciting new project with LangChain - come check it out!",
metadata = {"source": "tweet"},
)
document_4 = Document(
page_content = "Robbers broke into the city bank and stole $1 million in cash.",
metadata = {"source": "news"},
)
document_5 = Document(
page_content = "Wow! That was an amazing movie."
Тести видалення документів:
vector_store.delete(ids = [uuids[-1]])
```
Приклад виходу:
True
Тепер протестуємо similarity_search
:
results = vector_store.similarity_search(
"LangChain provides abstractions to make working with LLMs easy", k = 2
)
for res in results:
print(f"* {res.page_content} [{res.metadata}]")
Приклад виходу:
* Building an exciting new project with LangChain - come check it out! [{'_id': 'c474e923-a4ee-4258-890c-95882571dd8c', 'source': 'tweet'}]
* LangGraph is the best framework for building stateful, agentic applications! [{'_id': 'e476495d-6812-48cb-92aa-381efc23f76c', 'source': 'tweet'}]
та similarity_search_with_score
:
results = vector_store.similarity_search_with_score("Will it be hot tomorrow?", k = 1)
for res, score in results:
print(f"* [SIM = {score:3f}] {res.page_content} [{res.metadata}]")
Приклад виходу:
* [SIM = 0.569169] The weather forecast for tomorrow is cloudy and overcast, with a high of 62 degrees. [{'_id': 'fb22674d-85bc-454e-a95a-3cca20cd4b5d', 'source': 'news'}]
та, нарешті, as_retriever
:
retriever = vector_store.as_retriever(
search_type = "similarity_score_threshold",
search_kwargs = {"k": 1, "score_threshold": 0.2},
)
retriever.invoke("Stealing from the bank is a crime")
Приклад виходу:
[Document(metadata={'_id': 'd1d19d5c-518b-4d60-98e7-c6b0d2621efa', 'source': 'news'}, page_content='Robbers broke into the city bank and stole $1 million in cash.')]
Підсумок
Результати запитів стабільно демонструють надійну та ефективну роботу при використанні MongoDBAtlasVectorSearch
з SingleStore Kai, підкреслюючи сумісність і безшовну інтеграцію між цими двома технологіями.
✅
Перекладено з: Quick tip: Replace MongoDB® Atlas with SingleStore Kai in LangChain