Khám phá IntelligentGraph: Kết hợp Knowledge Graph và Intelligent Agents trong IoT và AI


Summary

Bài viết này khám phá cách mà IntelligentGraph kết hợp Knowledge Graph và intelligent agents trong lĩnh vực IoT và AI. Qua đó, nó mang lại cái nhìn sâu sắc về việc tối ưu hóa quản lý thông tin và nâng cao hiệu quả truy vấn dữ liệu. Key Points:

  • Khám phá kiến trúc hybrid LLM-Push/KG-Pull giúp tối ưu hóa quản lý thông tin và giảm chi phí lưu trữ.
  • Xác định thực thể quan trọng để đẩy dữ liệu hiệu quả từ LLM, tập trung vào thông tin có giá trị cao.
  • Triển khai intelligent agents để kéo dữ liệu chính xác từ Knowledge Graph, cải thiện tốc độ phản hồi.
Nhìn chung, bài viết cung cấp những hiểu biết quý giá về các chiến lược tích hợp giữa LLM và Knowledge Graph để phát triển hệ thống thông minh hơn.

Sự kết hợp giữa đồ thị tri thức và tác nhân thông minh

Gần đây, có rất nhiều sự hứng thú xung quanh Trí tuệ Nhân tạo và Đồ thị Tri thức, đặc biệt là về mối quan hệ cộng sinh đang nổi lên giữa chúng: các mô hình ngôn ngữ lớn (LLM) cung cấp khả năng suy luận phi cấu trúc, trong khi đó đồ thị tri thức lại mang đến sự suy luận có cấu trúc bổ sung. Nhưng làm thế nào để chúng ta kết nối hai thế giới phi cấu trúc và có cấu trúc này? Liệu LLM sẽ thúc đẩy hay đồ thị tri thức sẽ kéo theo?

Sự kết hợp giữa đồ thị tri thức và các tác nhân thông minh không chỉ đơn thuần là việc tích hợp dữ liệu mà còn là cách tổ chức và liên kết thông tin một cách hiệu quả. Các công nghệ như học máy (machine learning) và xử lý ngôn ngữ tự nhiên (NLP) thường được sử dụng trong việc xây dựng các tác nhân thông minh này, giúp tăng cường khả năng phân tích và hiểu biết của hệ thống. Ứng dụng thực tiễn của sự kết hợp này hiện đang được khám phá rộng rãi trong các lĩnh vực như Internet vạn vật (IoT) và trí tuệ nhân tạo (AI), mang lại nhiều lợi ích thiết thực cho người dùng cũng như doanh nghiệp.

Cách thức hoạt động của LLM-Push và KG-Pull

Với LLM-Push, chúng ta có thể thiết lập các tác nhân để đẩy thông tin từ mô hình ngôn ngữ lớn (LLM) vào một đồ thị tri thức. Nhưng câu hỏi đặt ra là: Chúng ta sẽ đẩy dữ liệu gì? Tần suất như thế nào? Khi nào thì dừng việc đẩy dữ liệu? Còn với KG-Pull, chúng ta có thể thêm các tác nhân thông minh vào đồ thị tri thức, cho phép họ kéo thông tin từ bên ngoài, bao gồm cả từ LLM. Phương pháp này giúp tránh việc phải đẩy dữ liệu không cần thiết vào kho lưu trữ chỉ vì lý do phòng hờ, mà thay vào đó, chỉ kéo dữ liệu khi thực sự cần thiết ngay lúc người dùng đặt câu hỏi về đồ thị.
Extended Perspectives Comparison:
Kết luậnLợi íchỨng dụng thực tiễnCông nghệ hỗ trợTương lai
Sự kết hợp giữa LLM và đồ thị tri thứcCải thiện khả năng suy luận và phân tích dữ liệuInternet vạn vật (IoT), trí tuệ nhân tạo (AI)Học máy, xử lý ngôn ngữ tự nhiên (NLP)Phát triển các tác nhân thông minh hơn
IntelligentGraph cho phép truy xuất dữ liệu linh hoạtGiảm thiểu việc lưu trữ dữ liệu không cần thiếtPhân tích quyết định trong IoT, IIoTRDFLib, Python scriptingMở rộng khả năng tương tác với LLMs
Khả năng vận hành của IntelligentGraph như bảng tính độngDễ dàng cập nhật và tính toán thông tin mớiQuản lý dữ liệu thành phố và mật độ dân số độngDữ liệu từ nhiều nguồn khác nhauThiết lập hệ thống phân tích tối ưu hơn
Thúc đẩy sự phát triển bền vững trong quản lý dữ liệuCung cấp cái nhìn sâu sắc về thông tin hiện cóKhám phá thêm nhiều lĩnh vực ứng dụng khác nhauAI và học máy liên tục cải tiếnKhai thác tri thức từ mô hình ngôn ngữ lớn

Giới thiệu về IntelligentGraph và các tác nhân thông minh

IntelligentGraph là một khả năng cho phép các tác nhân thông minh được nhúng trong đồ thị RDF. Những tác nhân này chỉ hoạt động khi có truy vấn tới đồ thị, yêu cầu kết quả liên quan đến chúng. Thực chất, các tác nhân thông minh này là những đoạn mã Python được lưu trữ dưới dạng giá trị SCRIPT. Tuy nhiên, khi giá trị SCRIPT được truy vấn, đoạn mã sẽ được thực thi và kết quả của nó sẽ được trả về thay vì chỉ đơn thuần trả về đoạn mã Python như một giá trị nguyên văn.

Hơn nữa, IntelligentGraph có thể tích hợp với Knowledge Graph để xử lý dữ liệu từ Internet of Things (IoT), giúp cải thiện độ chính xác và tính hiệu quả trong việc phân tích dữ liệu. Dữ liệu sử dụng trong Knowledge Graph thường xuất phát từ nhiều nguồn khác nhau và cần đảm bảo độ tin cậy cao để phục vụ cho các quyết định thông minh hơn.

Công nghệ hỗ trợ cho IntelligentGraph cũng rất đa dạng, bao gồm cả trí tuệ nhân tạo (AI) và học máy (Machine Learning), giúp tối ưu hóa khả năng phản hồi và xử lý dữ liệu nhanh chóng hơn. Ví dụ cụ thể về ứng dụng của IntelligentGraph có thể thấy rõ trong việc cải thiện quy trình ra quyết định trong lĩnh vực IoT, nơi mà dữ liệu lớn thường xuyên cần phải được phân tích kịp thời để đưa ra những giải pháp phù hợp nhất.

Lợi ích của việc sử dụng IntelligentGraph trong phân tích dữ liệu

Các giá trị văn bản đồ thị có kiểu dữ liệu SCRIPT có thể được so sánh với các ô trong bảng tính chứa công thức. Bảng tính hiển thị kết quả của công thức đó, thay vì hiển thị chính công thức.## Tại sao lại chọn IntelligentGraph? Cũng giống như trong một bảng tính, không phải lúc nào cũng có đủ dữ liệu để trả lời câu hỏi của người dùng. Trong bảng tính, chúng ta thêm các ô công thức. Còn trong đồ thị, chúng ta thường- Tính toán bên ngoài và đưa kết quả vào đồ thị,- Điều này giống như một bảng tính không cho phép sử dụng các ô công thức.


Lợi ích của việc sử dụng IntelligentGraph trong phân tích dữ liệu Free Images


So sánh giữa việc tính toán bên ngoài và sử dụng công thức trong đồ thị

Đoạn mã dưới đây sẽ giúp bạn truy xuất dữ liệu thô từ đồ thị và xử lý kết quả. Đây giống như một bảng tính nhưng chỉ có thể được sử dụng thông qua API của nó. Giải pháp IntelligentGraph cho phép các giá trị đối tượng được lưu trữ trong đồ thị hoạt động như những tác nhân thông minh, được thực thi khi chúng được tham chiếu.

!pip install "git+https://github.com/peterjohnlawrence/IntelligentGraph.git"


Giả sử rằng bạn đã quen thuộc với RDF và gói Python [RDFLib]. Do đó, bạn có thể sử dụng nó như bất kỳ đồ thị RDFLib nào khác.

from intelligentgraph import IntelligentGraph
from rdflib.namespace import FOAF

# Tạo một đồ thị
g = IntelligentGraph()

# Thêm một triple
iggy = URIRef("http://inova8.com/iggy")
g.add((iggy, FOAF.birthday, Literal(date(1951, 3, 8))))


Cho đến thời điểm này, mọi thứ vẫn không khác gì so với một đồ thị tiêu chuẩn.

Tạo một IntelligentGraph hỗ trợ LLM như thế nào

Một [IntelligentGraph] thực chất là một đồ thị RDF tiêu chuẩn từ [RDFlib], trong đó một số giá trị văn bản được thay thế bằng các đoạn mã Python. Nếu coi đây như một bảng tính với độ tuổi của mọi người, chúng ta có thể thêm một ô công thức để tính toán tuổi hiện tại. Điều này có thể thực hiện bằng cách thêm một đoạn mã Python vào thuộc tính FOAF.age:

g.add((iggy, FOAF.age, Literal('''from datetime import date
from rdflib.namespace import FOAF
for triple in g.triples( (s , FOAF.birthday, None)):
age = int((date.today() - triple[2].toPython()).days / 365.25)
_result = age''', datatype=SCRIPT.python)))


Để tìm ra tuổi của iggy, chúng ta chỉ cần truy vấn đồ thị như bình thường:

for (s,p,o) in g.triples((iggy,None,None)):  
print((p.toPython(), o.toPython()))


Kết quả sẽ là:
('http://xmlns.com/foaf/0.1/birthday', datetime.date(1951, 3, 8))
('http://xmlns.com/foaf/0.1/age', 72)

Tuổi của iggy là 72 và được tính toán vì truy vấn đã tham chiếu đến Intelligent-agent liên quan đến thuộc tính FOAF.age, điều này khiến nó tự động được tính toán. Thật đơn giản nhưng vẫn chưa có gì quá đặc biệt cho lắm.

Cách viết mã cho tác nhân thông minh để lấy dữ liệu từ LLM

Để tạo ra một IntelligentGraph được hỗ trợ bởi LLM, giả sử chúng ta muốn báo cáo mật độ dân số trung bình của mười thành phố lớn nhất ở bất kỳ quốc gia nào. Truyền thống, chúng ta sẽ phải tìm một nguồn dữ liệu về thành phố, diện tích và dân số, sau đó nhập nó vào trong một đồ thị. Tiếp theo, chúng ta cần truy vấn đồ thị bằng tên thành phố để lấy dữ liệu về dân số và diện tích nhằm tính toán mật độ dân số. Một nguồn dữ liệu có thể là LLM như OpenAI. Các yêu cầu của chúng ta với OpenAI sẽ như sau:

Lệnh hệ thống:
Tạo một cấu trúc json gồm ba cột: một cho tên thành phố/thị trấn, một cho dân số của nó, và một cho diện tích tính bằng hecta. Ví dụ { 'results':[{'city':'Manchester','population':'530300', 'area':'4390'}]}. Định dạng số dân không có dấu phẩy.


Yêu cầu từ người dùng:
Bây giờ hãy điền vào kết quả với mười thành phố lớn nhất ở Vương Quốc Anh theo dân số.


Phản hồi từ AI:
[{'city': 'London', 'population': '8908081', 'area': '1572'},{'city': 'Birmingham', 'population': '1137100', 'area': '267'},{'city': 'Manchester', 'population': '530300', 'area': '4390'},{'city': 'Glasgow', 'population': '591690', 'area': '1750'},{'city': ‘Leeds’, ’population’: ’474632’, ’area’: ’112’},{‘city’: ‘Liverpool’, ‘population’: ‘491500’, ‘area’: ‘11100’},{‘city’: ‘Newcastle’, ‘population’: ‘279100’, ‘area’: ’2878’},{‘city’: ‘Sheffield’, ‘population’: ’582506’, ’area’: ’1956’},{‘city’: ’Bristol’, ’population’: ’460000’, ’area’: ’11000’},{‘city’: ̀Edinburgh`, `population`: `464990`, `area`: `264`}]


Quá trình truy vấn dữ liệu từ IntelligentGraph ra sao

Thay vì lặp qua từng quốc gia trên thế giới và đưa kết quả vào một đồ thị, chúng ta có thể chèn một tác nhân thông minh vào trong đồ thị. Tác nhân thông minh này sẽ lấy dữ liệu dân số từ LLM mỗi khi nó được tham chiếu. Dưới đây là đoạn mã giả cho tác nhân thông minh này:

def getCities(countryCode):
Chuẩn bị prompt cho openAI
Gửi prompt đến OpenAI
Xử lý phản hồi từ OpenAI thành danh sách các thành phố (IRI, diện tích, dân số)
Trả về danh sách các thành phố

def getCity(country):
cho mỗi city trong getCities(country):
# tạo ra triples mô tả các thành phố và thuộc tính của chúng
yield (country, SDO.city, city.IRI)
yield (city.IRI, populationIRI, city.population)
yield (city.IRI, areaIRI, city.area)
yield (city.IRI, densityIRI, city.population/city.area)

# Gọi hàm getCity với đối tượng s để trả về từng triple theo yêu cầu.
requested_result = getCity(s)


Mã Python để tạo đồ thị này và thêm tác nhân thông minh như sau:

cityg = IntelligentGraph()
USA = URIRef("http://inova8.com/USA")
cityg.add((
USA,
SDO.City,
Literal('''
from openai import OpenAI
from rdflib.namespace import SDO
import os
import json

def getCities(countryCode):
client = OpenAI()
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "Tạo một cấu trúc json gồm ba cột: tên thành phố/thị trấn, dân số và diện tích tính bằng hecta. Ví dụ { 'results':[{'city':'Manchester','population':'530300', 'area':'4390'}]}. Định dạng số dân mà không có dấu phẩy ','"},
{"role": "user", "content": "Bây giờ hãy điền kết quả với 10 thành phố lớn nhất ở nước " + countryCode + " theo dân số."}
]
)
return json.loads(completion.choices[0].message.content)

def getCity(country):
countryCode = os.path.split(country.toPython())[1]
for city in getCities(countryCode)['results']:
cityName = city['city'].replace(' ', '_')
cityIRI = URIRef("http://inova8.com/" + cityName)

yield (country, SDO.City , cityIRI)

population = float(city['population'].replace(',', ''))
area = float(city['area'].replace(',', ''))

yield (cityIRI, URIRef("http://inova8.com/population"), Literal(population))
yield (cityIRI, URIRef("http://inova8.com/area"), Literal(area))
yield (cityIRI, URIRef("http://inova8.com/density"), Literal(population / area))

_result = getCity(s)''', datatype=SCRIPT.python)))


Với cách tiếp cận này giúp tối ưu hóa việc truy xuất dữ liệu từ IntelligentGraph bằng cách sử dụng sức mạnh của trí tuệ nhân tạo để tự động cập nhật và cung cấp thông tin cần thiết về các thành phố dựa trên nhu cầu cụ thể.''

Ai có thể hưởng lợi từ việc áp dụng IntelligentGraph?

Kịch bản tác nhân thông minh được trình bày dưới dạng in đậm. Lưu ý rằng kịch bản này không trả về một giá trị vô hướng, mà tạo ra các bộ ba như sau:
quốc gia, SDO.Thành phố, cityIRI
cityIRI, URIRef("http://inova8.com/population"), Literal(dân số)
cityIRI, URIRef("http://inova8.com/area"), Literal(diện tích)
cityIRI, URIRef("http://inova8.com/density"), Literal(dân số/diện tích)

Mặc dù đồ thị cơ sở chỉ chứa một bộ ba:
Mỹ, SDO.Thành phố, ScriptLiteral

Khi chúng ta truy vấn nó bằng đoạn mã sau:
for (s,p,o) in cityg.triples((None,None,None)):  
print((p.toPython(),o.toPython()))

Nó sẽ trả về kết quả như sau:
('https://schema.org/City', 'http://inova8.com/New_York_City')
('http://inova8.com/population', 8537673.0)
('http://inova8.com/area', 784.0)
('http://inova8.com/density', 10889.889030612245)

('https://schema.org/City', 'http://inova8.com/Los_Angeles')
('http://inova8.com/population', 3979576.0)
('http://inova8.com/area', 1214.0)
('http://inova8.com/density', 3278.0691927512357)

('https://schema.org/City', 'http://inova8.com/Chicago')
('http://inova8.com/population', 2704958.0)
('http://inova8.com/area', 606.0)
('http://inova8.com/density', 4463.62706270627)

...


Các kết quả tương tự cho nhiều thành phố khác nhau như Houston, Phoenix và Philadelphia cũng sẽ xuất hiện trong danh sách trên.

Khả năng tích hợp với IoT và mô hình hóa ngữ nghĩa

Ai có thể hưởng lợi từ IntelligentGraph? IntelligentGraph mở ra nhiều khả năng phân tích dữ liệu, cho phép các tác nhân thông minh hoạt động ngay trong đồ thị thay vì chỉ dựa vào mã bên ngoài.

### Phân Tích Dữ Liệu
Thông thường, việc phân tích dữ liệu được thực hiện trong bảng tính do tính dễ dàng của nó khi thêm các cột tính toán cũng như tổng hợp giá trị cột. Với IntelligentGraph, bạn có thể thực hiện điều này một cách dễ dàng:
- Mỗi lớp là một bảng tính riêng biệt.
- Mỗi thực thể (instance) của lớp đó, hay còn gọi là chủ đề của một bộ ba (triple), sẽ tương ứng với danh tính của một hàng.
- Mỗi thuộc tính của thực thể trở thành một cột.
- Các tổng hợp chính là những thuộc tính liên quan đến lớp của các thực thể cá nhân.

### Tích Hợp với IoT và IIoT
Internet of Things (IoT) và Industrial Internet of Things (IIoT) cung cấp nguồn đo lường rất phong phú. Tuy nhiên, những hệ thống IoT và IIoT này thường thiếu hiểu biết về ngữ cảnh mà từ đó các phép đo được lấy ra. Một mô hình đồ thị về nhà máy, tòa nhà hoặc khu vực địa lý sẽ giúp nắm bắt tốt hơn ngữ cảnh đó. IntelligentGraph cho phép các tác nhân trong mô hình ngữ cảnh thu thập thông tin từ máy chủ IoT hoặc IIoT theo cách **just-in-time**, thay vì phải đẩy quá nhiều thông tin vào đồ thị **just-in-case**. Khi những phép đo này đã có mặt trong đồ thị như bất kỳ bộ ba nào khác, chúng ta cũng có thể thêm các tác nhân phân tích vào đồ thị để tạo nên một graph thật sự thông minh.

### Tích Hợp với Các Mô Hình Ngôn Ngữ Lớn (LLMs)
IntelligentGraph có khả năng khai thác dữ liệu cấu trúc từ các mô hình ngôn ngữ lớn như ChatGPT, Bard, LLama và nhiều cái khác nữa. Điều này mở ra khả năng kết hợp giữa dữ liệu không cấu trúc từ thế giới LLMs với cấu trúc chặt chẽ của đồ thị, giúp cải thiện khả năng tương tác và phân tích sâu sắc hơn.

Reference Articles

nghiên cứu nâng cao chất lượng truyền thông và ứng dụng ...

Luận án sử dụng thông tin trích dẫn từ nhiều nguồn tham khảo khác nhau và các thông tin trích dẫn được ghi rõ nguồn gốc. Các kết quả nghiên cứu của tôi được ...

(PDF) A Knowledge Graph Approach for the Detection of ...

Như đã đề cập ở Phần I, thuật ngữ đồ thị tri thức mờ (FKG) lần đầu được giới thiệu vào năm 2020 và được tích hợp trong mô hình M-CFIS-FKG.

Source: ResearchGate

Các Tác Nhân AI Trong Thế Giới Tiền Mã Hóa - CoinEx

I. Nền tảng AI Agent trong kỷ nguyên Web2. 1. Sự phát triển của AI Agents truyền thống. Khái niệm ban đầu và giới hạn của Intelligent Agents.

Source: coinex.network

Trí tuệ nhân tạo trong thời đại số: Bối cảnh thế giới và ...

Tóm tắt: Trí tuệ nhân tạo hiện đang phát triển với tốc độ “hàm mũ”, có nhiều đóng góp quan trọng vào sản xuất, kinh doanh, dịch vụ và đời sống con người.


Eric Schmidt

Expert

Related Discussions

❖ Related Articles