Швидка порада: замініть MongoDB® Atlas на SingleStore Kai в LangChain

Швидкий тест, щоб перевірити, чи працює 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

Leave a Reply

Your email address will not be published. Required fields are marked *