Швидкий тест для визначення, чи буде працювати LlamaIndex з Kai
Анотація
Ця стаття демонструє, як інтегрувати MongoDBAtlasVectorSearch
від LlamaIndex з SingleStore Kai, API, сумісним з MongoDB. Вона висвітлює простий тест, який показує, що LlamaIndex і Kai працюють бездоганно разом, забезпечуючи основу для застосунків на базі штучного інтелекту.
Ноутбук, використаний в цій статті, доступний на GitHub.
Вступ
SingleStore Kai — це API, сумісний з MongoDB, який працює на базі розподіленої бази даних SingleStore, що дозволяє розробникам інтегрувати робочі процеси MongoDB з масштабованою базою даних. LlamaIndex підтримує MongoDBAtlasVectorSearch
для просунутих запитів та вилучення даних. У цій статті тестується MongoDBAtlasVectorSearch
з SingleStore Kai.
Створення облікового запису SingleStore Cloud
У попередній статті показано кроки для створення безкоштовного облікового запису SingleStore Cloud. Ми використаємо Standard Tier і виберемо стандартні імена для групи робочих просторів і робочого простору. Також ми активуємо SingleStore Kai.
Ми збережемо наш OpenAI API Key у сховищі секретів за допомогою OPENAI_API_KEY
.
Імпортуємо ноутбук
Ми завантажимо ноутбук з GitHub.
З лівої панелі навігації в порталі SingleStore Cloud ми вибираємо DEVELOP > Data Studio.
У верхньому правому куті веб-сторінки вибираємо New Notebook > Import From File. Використовуємо майстра, щоб знайти та імпортувати ноутбук, який ми завантажили з GitHub.
Запуск ноутбука
Ноутбук адаптовано з репозиторію LlamaIndex на GitHub.
Спочатку завантажимо деякі дані для використання:
!mkdir -p 'data/10k/'
!wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/10k/uber_2021.pdf' -O 'data/10k/uber_2021.pdf'
Далі переконаємось, що OpenAI API Key доступний, і визначимо моделі LLM та вбудовування:
os.environ["OPENAI_API_KEY"] = get_secret("OPENAI_API_KEY")
llm = OpenAI(
model = "gpt-4o-mini"
)
embed_model = OpenAIEmbedding(
model = "text-embedding-3-small"
)
Отримаємо з’єднання з Kai, використовуючи connection_url_kai
, яке є змінною середовища, що вже вказує на екземпляр Kai, встановимо базу даних і колекцію, створимо індекс векторів та збережемо раніше завантажені дані:
kai_client = pymongo.MongoClient(connection_url_kai)
db = kai_client["default_db"]
collection = db["default_collection"]
collection.create_index(
[("embedding", "vector")],
name = "vector_index",
kaiIndexOptions = {
"index_type": "AUTO",
"metric_type": "DOT_PRODUCT",
"dimensions": 1536
}
)
store = MongoDBAtlasVectorSearch(kai_client)
storage_context = StorageContext.from_defaults(vector_store = store)
uber_docs = SimpleDirectoryReader(
input_files = ["./data/10k/uber_2021.pdf"]
).load_data()
index = VectorStoreIndex.from_documents(
uber_docs, storage_context = storage_context, embed_model = embed_model
)
Тепер поставимо запитання:
response = index.as_query_engine(llm = llm).query("What was Uber's revenue?")
display(Markdown(f"{response}"))
Приклад виводу:
Uber's revenue for the year ended December 31, 2021, was $17.455 billion.
Наступний код перевіряє, скільки документів збережено в базі даних, визначає конкретний документ за його ID (ref_doc_id
), а потім видаляє його.
Перед і після кожного кроку виводиться кількість документів у базі даних, щоб показати зміни.
print(store._collection.count_documents({}))
typed_response = (
response if isinstance(response, Response) else response.get_response()
)
ref_doc_id = typed_response.source_nodes[0].node.ref_doc_id
print(store._collection.count_documents({"metadata.ref_doc_id": ref_doc_id}))
if ref_doc_id:
store.delete(ref_doc_id)
print(store._collection.count_documents({}))
Приклад виводу:
395
1
394
Підсумки
Результати цього швидкого тесту виглядають багатообіцяльними. Необхідні подальші тести для визначення повної сумісності між LlamaIndex і Kai.
✅
Перекладено з: Quick tip: Replace MongoDB® Atlas with SingleStore Kai in LlamaIndex