Базы данных: Chroma

Chromaopen in new window — векторная база данных. Векторные базы данных позволяют быстро выполнения операции над векторами: сравнение, преобразование. База данных работает следующим образом: на вход подаются исходные данные, исходные данные проходят преобразование через некоторую модель в вектора, полученные вектора хранятся в базе данных.

Пример на Python

Пример использования библиотеки chromadbopen in new window:

import requests
from bs4 import BeautifulSoup

from chromadb import Client

# загрузим несколько статей, чтобы подать их на вход модели

urls = [
    'https://way23.ru/linux-sed.html',
    'https://way23.ru/linux-cron.html',
    'https://way23.ru/crypto-cloud.html',
    'https://way23.ru/philosophy-meaning.html',
]

articles = []

for url in urls:
    response = requests.get(url)
    soup = BeautifulSoup(response.content, 'html.parser')
    
    article = {}
    article['text'] = soup.get_text()
    article['url'] = url
    articles.append(article)

# Инициализация клиента ChromaDB
client = Client()

#создание коллекции
collection = client.get_or_create_collection(name="articles")

# Добавление статей в коллекцию
for article in articles:
    # В данном случае используется модель по умолчанию.
    # В этом примере текст преобразуется в вектор автоматически
    # можно сделать это вручную вызовом функций библиотеки
    collection.upsert(
        documents=[article['text']],
        metadatas=[{'url': article['url']}],
        ids=[article['url']]
    )

def recommend_articles(user_query):
    results = collection.query(
        query_texts=[user_query],
        n_results=2  # Количество рекомендуемых статей
    )
    return results

user_query = "как пользоваться Cryptomator"
results = recommend_articles(user_query)

print(results['ids'])
# [['https://way23.ru/crypto-cloud.html', 'https://way23.ru/linux-cron.html']]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

Ссылки

Последниее изменение: 02.01.2025, 18:22:12