はじめに
この記事は、Oracle Cloud(OCI) で提供されている Autonomouse AI Database(ADB) の Select AI の回答精度を上げる方法についてまとめています.
まず、Select AI は、自然言語で DB に問い合わせると SQL を自動生成&実行し、結果を返してくれる技術です.
ただ、LLM を利用する技術なので、適切な質問文を投げないと精度の良い回答が得られないという問題が、あります。
質問文は、任意のユーザが、それぞれの判断で文書化するため、事前に想定するのは困難です. そこで、テーブルの内容や列の意味などを事前に定義しておくことで、 LLM が質問文に即した回答(SQL)を得られるようになります.
そこで、その方法のついてまとめています。
...
対象者
この記事は下記のような人を対象にしています.
- Oracle DB は、オンプレミスで使っている.
- Oracle Cloud の基本操作は、知っている.
- Oracle DB を操作するときは、sqlplus を使いたい.
- ADB とその上での Select AI を使ったことがある.
- Select AI の回答精度を上げる方法を知りたい.
目次
- 事前準備(ADBの作成から接続まで)
- ADB の作成
- PC(macbook) への Oracle Client の install
- sqlplus からの ADB への接続
- Select AI の復習
- 精度向上の方法
- 方法1. comment を使う方法
- 方法2. annotation を使う方法
- 余談
- 参考記事・ドキュメント
事前準備(ADBの作成から接続まで)
以下の 4 つは、別の記事にまとめているのでそちらを参照ください。
[Oracle Cloud] ADB で Select AI を試してみる
- ADB の作成
- PC(macbook) への Oracle Client の install
- sqlplus からの ADB への接続
- Select AI を使用できるようにする
Select AI の復習
事前準備完了の状態では、以下のように Select AI が実行できます。
duke@mac ~ % selectAI % sqlplus ai_user/Welcome12345#@aidb1_high
SQL>
SQL> select username from user_users;
USERNAME
--------------------------------------------------------------------------------
AI_USER
SQL>
SQL> EXEC DBMS_CLOUD_AI.SET_PROFILE('SELECT_AI_PROFILE');
PL/SQLプロシージャが正常に完了しました。
SQL>
SQL> desc highschools;
名前 NULL? 型
----------------------------------------- -------- ----------------------------
BOROUGH VARCHAR2(64)
SCHOOL_NAME VARCHAR2(256)
NEIGHBORHOOD VARCHAR2(64)
INTEREST VARCHAR2(64)
METHOD VARCHAR2(64)
TOTAL_STUDENTS NUMBER
GRADUATION_RATE NUMBER
ATTENDANCE_RATE NUMBER
COLLEGE_CAREER_RATE NUMBER
SAFE NUMBER
SEATS NUMBER
APPLICANTS NUMBER
DBN VARCHAR2(64)
LATITUDE NUMBER
LONGITUDE NUMBER
LANGUAGE_CLASSES VARCHAR2(4000)
ADVANCED_PLACEMENT_COURSES VARCHAR2(4000)
SCHOOL_SPORTS VARCHAR2(4000)
FAQ_URL VARCHAR2(64)
OVERVIEW_PARAGRAPH VARCHAR2(4000)
ACADEMIC_OPPORTUNITIES VARCHAR2(4000)
ADVANCEDPLACEMENT_COURSES VARCHAR2(4000)
DIADETAILS VARCHAR2(4000)
EXTRACURRICULAR_ACTIVITIES VARCHAR2(4000)
PSAL_SPORTS_BOYS VARCHAR2(4000)
PSAL_SPORTS_GIRLS VARCHAR2(4000)
ADDTL_INFO1 VARCHAR2(4000)
SQL> select count(*) from highschools;
COUNT(*)
----------
427
SQL>
SQL> select ai 高校の総数は ;
Total_High_Schools
------------------
427
SQL>
精度向上の方法
LLM は、テーブル内のデータの意味を知らないので、テーブル名や列名などから推測し判断しています。
そのため、質問文に対して適切な回答を得るには、テーブルや列の意味を詳しく明記しておく必要があります.
その方法として、OracleDB の Comment と Annotation があります.
Comment と Annotation の違いは、以下のようになります。
| 特徴 | Comment | Annotation |
|---|---|---|
| 利用できるバージョン | OracleDB 6~26ai | 26ai |
| 対象のオブジェクト | 表、列 | 表、列、ビュー、索引、ドメイン |
| 主な用途 | プログラマのためにコードの説明を行う | LLM のためにデータの意味やルールを指定する |
| 記述形式 | 短いテキスト | 名前と値のペア |
| メリット | 従来のDBの機能のため設定が容易 | LLM のためにより複雑なビジネスルールや計算式などを定義できる |
方法1. Comment を使う場合
今回利用するテーブルは、highschools という名前ですが、comment が全くない状態から、以下のような質問文を投げてみます。
SQL> select ai クイーンズに高校は全部で何校ありますか;
TOTAL_SCHOOLS
-------------
0
SQL>
SQL> SELECT AI showsql クイーンズに高校は全部で何校ありますか;
RESPONSE
--------------------------------------------------------------------------------
SELECT COUNT(*) AS total_schools
FROM "AI_USER"."HIGHSCHOOLS" h
WHERE UPPER(h."BOROUGH") = UPPER('Queens')
SQL>
LLM が気を利かせて、Queens と英語に置き換えて検索してくれましたが、実際の
BOROUGH 列には、日本語で”クイーンズ"と入っているためヒットしませんでした。
そこで、BOROUGH 列は、日本語でデータが入っているということを comment に追加してあげます.
ただ、その前に、LLM に対して Select AI では、comment の情報も合わせて使って欲しいということを伝える必要があります。
そのためには、AI Profile に attribute として comments=true (デフォルトは false) をセットします。
SQL> select profile_name, attribute_name, attribute_value from user_cloud_ai_profile_ATTRIBUTES;
PROFILE_NAME ATTRIBUTE_NAME ATTRIBUTE_VALUE
---------------------------- ---------------------------- ----------------------------------------
SELECT_AI_PROFILE target_language ja
SELECT_AI_PROFILE provider oci
SELECT_AI_PROFILE credential_name OCI_CRED
SELECT_AI_PROFILE model xai.grok-code-fast-1
SELECT_AI_PROFILE region us-chicago-1
SELECT_AI_PROFILE object_list [{"owner":"ai_user","name":"highschools"}]
6行が選択されました。
SQL>
begin
dbms_cloud_ai.set_attribute(
profile_name => 'SELECT_AI_PROFILE' ,
attribute_name => 'comments',
attribute_value => 'true' );
end;
SQL> /
PL/SQLプロシージャが正常に完了しました。
SQL> select profile_name, attribute_name, attribute_value from user_cloud_ai_profile_ATTRIBUTES;
PROFILE_NAME ATTRIBUTE_NAME ATTRIBUTE_VALUE
---------------------------- ---------------------------- ---------------
SELECT_AI_PROFILE target_language ja
SELECT_AI_PROFILE comments true
SELECT_AI_PROFILE provider oci
SELECT_AI_PROFILE credential_name OCI_CRED
SELECT_AI_PROFILE model xai.grok-code-fast-1
SELECT_AI_PROFILE region us-chicago-1
SELECT_AI_PROFILE object_list [{"owner":"ai_user","name":"highschools"}]
7行が選択されました。
SQL>
AI Profile で comment を使う設定ができたので BOROUGH 列は、日本語でデータが入っているということを追加してあげます.
SQL> comment on column ai_user.highschools.BOROUGH IS '地区名が日本語で書かれている';
コメントが作成されました。
SQL> select * from user_col_comments where table_name='HIGHSCHOOLS';
TABLE_NAME COLUMN_NAME COMMENTS ORIGIN_CON_ID
---------------------- ---------------------- ------------------- --------
HIGHSCHOOLS EXTRACURRICULAR_ACTIVITIES 144
HIGHSCHOOLS PSAL_SPORTS_BOYS 144
HIGHSCHOOLS PSAL_SPORTS_GIRLS 144
HIGHSCHOOLS ADDTL_INFO1 144
HIGHSCHOOLS BOROUGH 地区名が日本語で書かれている 144
HIGHSCHOOLS SCHOOL_NAME 144
HIGHSCHOOLS NEIGHBORHOOD 144
HIGHSCHOOLS INTEREST 144
HIGHSCHOOLS METHOD 144
HIGHSCHOOLS TOTAL_STUDENTS 144
HIGHSCHOOLS GRADUATION_RATE 144
TABLE_NAME COLUMN_NAME COMMENTS ORIGIN_CON_ID
---------------------- ---------------------- ------------------- --------
HIGHSCHOOLS ATTENDANCE_RATE 144
HIGHSCHOOLS COLLEGE_CAREER_RATE 144
HIGHSCHOOLS SAFE 144
HIGHSCHOOLS SEATS 144
HIGHSCHOOLS APPLICANTS 144
HIGHSCHOOLS DBN 144
HIGHSCHOOLS LATITUDE 144
HIGHSCHOOLS LONGITUDE 144
HIGHSCHOOLS LANGUAGE_CLASSES 144
HIGHSCHOOLS ADVANCED_PLACEMENT_COURSES 144
HIGHSCHOOLS SCHOOL_SPORTS 144
TABLE_NAME COLUMN_NAME COMMENTS ORIGIN_CON_ID
---------------------- ---------------------- ------------------- --------
HIGHSCHOOLS FAQ_URL 144
HIGHSCHOOLS OVERVIEW_PARAGRAPH 144
HIGHSCHOOLS ACADEMIC_OPPORTUNITIES 144
HIGHSCHOOLS ADVANCEDPLACEMENT_COURSES 144
HIGHSCHOOLS DIADETAILS 144
27行が選択されました。
SQL>
ここで改めて同じ質問を投げてみます。
すると無事に結果が返ってきました。
SQL> select ai クイーンズに高校は全部で何校ありますか;
NUM_HIGHSCHOOLS
---------------
80
SQL>
SQL> select ai showsql クイーンズに高校は全部で何校ありますか;
RESPONSE
-------------------------------------------------------------------------------------------------------
SELECT COUNT(*) AS num_highschools
FROM "AI_USER"."HIGHSCHOOLS" h
WHERE h."BOROUGH" = 'クイーンズ'
SQL>
SQL> select ai showprompt クイーンズに高校は全部で何校ありますか;
RESPONSE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[
{
"role" : "SYSTEM",
"content" :
[
{
"type" : "TEXT",
"text" : "### Oracle SQL tables with their properties:\n # CREATE TABLE \"AI_USER\".\"HIGHSCHOOLS\" (\"EXTRACURRICULAR_ACTIVITIES\" VARCHAR2(4000), \"DIADETAILS\" VARCHAR2(4000), \"ADVANCEDPLA
CEMENT_COURSES\" VARCHAR2(4000), \"ACADEMIC_OPPORTUNITIES\" VARCHAR2(4000), \"OVERVIEW_PARAGRAPH\" VARCHAR2(4000), \"FAQ_URL\" VARCHAR2(64) 'よくある質問', \"SCHOOL_SPORTS\" VARCHAR2(4000), \"ADVANCED
_PLACEMENT_COURSES\" VARCHAR2(4000), \"LANGUAGE_CLASSES\" VARCHAR2(4000), \"LONGITUDE\" NUMBER, \"LATITUDE\" NUMBER, \"DBN\" VARCHAR2(64), \"APPLICANTS\" NUMBER, \"SEATS\" NUMBER, \"SAFE\" NUMBER, \"C
OLLEGE_CAREER_RATE\" NUMBER, \"ATTENDANCE_RATE\" NUMBER, \"GRADUATION_RATE\" NUMBER, \"TOTAL_STUDENTS\" NUMBER, \"METHOD\" VARCHAR2(64), \"INTEREST\" VARCHAR2(64), \"NEIGHBORHOOD\" VARCHAR2(64), \"SCH
RESPONSE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
OOL_NAME\" VARCHAR2(256), \"BOROUGH\" VARCHAR2(64) '地区名が日本語で書かれている', \"ADDTL_INFO1\" VARCHAR2(4000), \"PSAL_SPORTS_GIRLS\" VARCHAR2(4000), \"PSAL_SPORTS_BOYS\" VARCHAR2(4000))\n"
}
]
},
{
"role" : "USER",
"content" :
[
{
"type" : "TEXT",
"text" : "\n\nGiven an input Question, create a syntactically correct Oracle SQL query to run. Pretty print the SQL query. \n - Pay attention to using only the column names that you can see in
RESPONSE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
the schema description.\n - Be careful to not query for columns that do not exist. Also, pay attention to which column is in which table.\n - Please double check that the SQL query you generate is va
lid for Oracle Database.\n - Consider table name, schema name and column name to be case sensitive and enclose in double quotes. - Only use the tables listed below. \n - If the table definition inclu
des the table owner, you should include both the owner name and user-qualified table name in the Oracle SQL. - DO NOT keep empty lines in the middle of the Oracle SQL.\n - DO NOT write anything else e
xcept the Oracle SQL.\n - Always use table alias and easy to read column aliases. \n\nFor string comparisons in WHERE clause, CAREFULLY check if any string in the question is in DOUBLE QUOTES, and fol
low the rules: \n - If a string is in DOUBLE QUOTES, use case SENSITIVE comparisons with NO UPPER() function.\n - If a string is not in DOUBLE QUOTES, use case INSENSITIVE comparisons by using UPPER()
function around both operands of the string comparison.\nNote: These rules apply strictly to string comparisons in the WHERE clause and do not affect column names, table names, or other query compone
nts.\n\nUse the examples below in two ways: \n- If the question matches an user_prompt in examples, return the corresponding SQL query exactly as shown.\n- If the question is different, use the follow
ing examples as a reference. Learn their structure, aliasing, and casing rules when generating new queries. Here are examples of previous successful queries for similar questions that you can refer to
and learn from: \n[{\"user_prompt\":\"クイーンズにある高校の数\",\"sql_query\":\"SELECT COUNT(*) AS num_highschools\\nFROM \\\"AI_USER\\\".\\\"HIGHSCHOOLS\\\" h\\nWHERE h.\\\"BOROUGH\\\" = 'クイーン
ズ'\"},{\"user_prompt\":\"高校の生徒の総数を教えて\",\"sql_query\":\"SELECT SUM(h.\\\"TOTAL_STUDENTS\\\") AS tal\\nFROM \\\"AI_USER\\\".\\\"HIGHSCHOOLS\\\" h\"},{\"user_prompt\":\"倍率が高い高校10校\"
,\"sql_query\":\"SELECT h.\\\"SCHOOL_NAME\\\", (h.\\\"APPLICANTS\\\" / h.\\\"SEATS\\\") AS ratio\\nFROM \\\"AI_USER\\\".\\\"HIGHSCHOOLS\\\" h\\nWHERE h.\\\"APPLICANTS\\\" IS NOT NULL\\n AND h.\\\"SEA
RESPONSE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TS\\\" IS NOT NULL\\n AND h.\\\"SEATS\\\" > 0\\nORDER BY ratio DESC\\nFETCH FIRST 10 ROWS ONLY\"}]\n\nQuestion: クイーンズに高校は全部で何校ありますか"
}
]
}
]
SQL>
上記の showprompt の結果から、LLM に渡される文字列を見てみると以下の記述が追加されていることがわかりました。
BOROUGH\" VARCHAR2(64) '地区名が日本語で書かれている',
このように列やテーブルなどに comment の形で、情報を追加してあげることで LLM が正しい構造を理解し、結果、回答精度が上がります.
ただ、comment が文章の場合は、文書解析を行う必要があるため、回答に時間がかかる可能性があります.
方法2. Annotation を使う方法
次は、Annotation を使った方法を試します。
そのためには、まず、AI Profile に attribute として annotations=true (デフォルトは false) をセットします。
SQL> begin
dbms_cloud_ai.set_attribute(
profile_name => 'SELECT_AI_PROFILE' ,
attribute_name => 'annotations',
attribute_value => 'true' );
end;
SQL> /
PL/SQLプロシージャが正常に完了しました。
SQL> select profile_name, attribute_name, attribute_value from user_cloud_ai_profile_ATTRIBUTES ;
PROFILE_NAME ATTRIBUTE_NAME ATTRIBUTE_VALUE
------------------------- -------------------- --------------------
SELECT_AI_PROFILE target_language ja
SELECT_AI_PROFILE annotations true
SELECT_AI_PROFILE comments true
SELECT_AI_PROFILE provider oci
SELECT_AI_PROFILE credential_name OCI_CRED
SELECT_AI_PROFILE model xai.grok-code-fast-1
SELECT_AI_PROFILE region us-chicago-1
SELECT_AI_PROFILE object_list [{"owner":"ai_user","name":"highschools"}]
8行が選択されました。
SQL>
Annotation は、(名前, 値)を指定します。
列名に使う単語は、質問文で使う単語と異なる可能性があるため、よく使われそうな単語を Annotation で指定してみます。
SQL>
SQL> ALTER TABLE HIGHSCHOOLS
MODIFY (BOROUGH
ANNOTATIONS (
DESCRIPTION '行政区',
ALIASES '地区,地域,区,エリア'
)
); 2 3 4 5 6 7
表が変更されました。
SQL> ALTER TABLE HIGHSCHOOLS
MODIFY (SCHOOL_NAME
ANNOTATIONS (
DESCRIPTION '高校名',
ALIASES '高校,高等学校,学校名,スクール'
)
); 2 3 4 5 6 7
表が変更されました。
SQL> ALTER TABLE HIGHSCHOOLS
MODIFY (NEIGHBORHOOD
ANNOTATIONS (
DESCRIPTION '学校所在地の地域名',
ALIASES '地域,近隣地域,学区,エリア'
)
);
2 3 4 5 6 7
表が変更されました。
SQL>
SQL> ALTER TABLE HIGHSCHOOLS
MODIFY (INTEREST
ANNOTATIONS (
DESCRIPTION '学校の特色や興味分野',
ALIASES '特色,専門分野,重点分野,興味分野'
)
); 2 3 4 5 6 7
表が変更されました。
SQL>
SQL> select object_name, object_type, column_name, annotation_name, annotation_value from user_annotations_usage where object_name like 'HIGHSCHOOLS' ;
OBJECT_NAME OBJECT_TY COLUMN_NAME ANNOTATION_NAME ANNOTATION_VALUE
-------------------- --------- -------------------- ------------------------------ ------------------------------
HIGHSCHOOLS TABLE BOROUGH DATA_TOOLS_INGEST_fieldName BOROUGH
HIGHSCHOOLS TABLE SCHOOL_NAME DATA_TOOLS_INGEST_fieldName SCHOOL_NAME
HIGHSCHOOLS TABLE NEIGHBORHOOD DATA_TOOLS_INGEST_fieldName NEIGHBORHOOD
HIGHSCHOOLS TABLE INTEREST DATA_TOOLS_INGEST_fieldName INTEREST
HIGHSCHOOLS TABLE METHOD DATA_TOOLS_INGEST_fieldName METHOD
HIGHSCHOOLS TABLE TOTAL_STUDENTS DATA_TOOLS_INGEST_fieldName TOTAL_STUDENTS
HIGHSCHOOLS TABLE GRADUATION_RATE DATA_TOOLS_INGEST_fieldName GRADUATION_RATE
HIGHSCHOOLS TABLE ATTENDANCE_RATE DATA_TOOLS_INGEST_fieldName ATTENDANCE_RATE
HIGHSCHOOLS TABLE COLLEGE_CAREER_RATE DATA_TOOLS_INGEST_fieldName COLLEGE_CAREER_RATE
HIGHSCHOOLS TABLE SAFE DATA_TOOLS_INGEST_fieldName SAFE
HIGHSCHOOLS TABLE SEATS DATA_TOOLS_INGEST_fieldName SEATS
OBJECT_NAME OBJECT_TY COLUMN_NAME ANNOTATION_NAME ANNOTATION_VALUE
-------------------- --------- -------------------- ------------------------------ ------------------------------
HIGHSCHOOLS TABLE APPLICANTS DATA_TOOLS_INGEST_fieldName APPLICANTS
HIGHSCHOOLS TABLE DBN DATA_TOOLS_INGEST_fieldName DBN
HIGHSCHOOLS TABLE LATITUDE DATA_TOOLS_INGEST_fieldName LATITUDE
HIGHSCHOOLS TABLE LONGITUDE DATA_TOOLS_INGEST_fieldName LONGITUDE
HIGHSCHOOLS TABLE LANGUAGE_CLASSES DATA_TOOLS_INGEST_fieldName LANGUAGE_CLASSES
HIGHSCHOOLS TABLE ADVANCED_PLACEMENT_C DATA_TOOLS_INGEST_fieldName ADVANCED_PLACEMENT_COURSES
OURSES
HIGHSCHOOLS TABLE SCHOOL_SPORTS DATA_TOOLS_INGEST_fieldName SCHOOL_SPORTS
HIGHSCHOOLS TABLE FAQ_URL DATA_TOOLS_INGEST_fieldName FAQ_URL
HIGHSCHOOLS TABLE OVERVIEW_PARAGRAPH DATA_TOOLS_INGEST_fieldName OVERVIEW_PARAGRAPH
OBJECT_NAME OBJECT_TY COLUMN_NAME ANNOTATION_NAME ANNOTATION_VALUE
-------------------- --------- -------------------- ------------------------------ ------------------------------
HIGHSCHOOLS TABLE ACADEMIC_OPPORTUNITI DATA_TOOLS_INGEST_fieldName ACADEMIC_OPPORTUNITIES
ES
HIGHSCHOOLS TABLE ADVANCEDPLACEMENT_CO DATA_TOOLS_INGEST_fieldName ADVANCEDPLACEMENT_COURSES
URSES
HIGHSCHOOLS TABLE DIADETAILS DATA_TOOLS_INGEST_fieldName DIADETAILS
HIGHSCHOOLS TABLE EXTRACURRICULAR_ACTI DATA_TOOLS_INGEST_fieldName EXTRACURRICULAR_ACTIVITIES
VITIES
HIGHSCHOOLS TABLE PSAL_SPORTS_BOYS DATA_TOOLS_INGEST_fieldName PSAL_SPORTS_BOYS
OBJECT_NAME OBJECT_TY COLUMN_NAME ANNOTATION_NAME ANNOTATION_VALUE
-------------------- --------- -------------------- ------------------------------ ------------------------------
HIGHSCHOOLS TABLE PSAL_SPORTS_GIRLS DATA_TOOLS_INGEST_fieldName PSAL_SPORTS_GIRLS
HIGHSCHOOLS TABLE ADDTL_INFO1 DATA_TOOLS_INGEST_fieldName ADDTL_INFO1
HIGHSCHOOLS TABLE SCHOOL_SPORTS LANGUAGE 日本語
HIGHSCHOOLS TABLE SCHOOL_SPORTS ALIASES 部活,スポーツ,運動, 部
HIGHSCHOOLS TABLE BOROUGH DESCRIPTION 行政区
HIGHSCHOOLS TABLE BOROUGH ALIASES 地区,地域,区,エリア
HIGHSCHOOLS TABLE SCHOOL_NAME DESCRIPTION 高校名
HIGHSCHOOLS TABLE SCHOOL_NAME ALIASES 高校,高等学校,学校名,スクール
HIGHSCHOOLS TABLE NEIGHBORHOOD DESCRIPTION 学校所在地の地域名
HIGHSCHOOLS TABLE NEIGHBORHOOD ALIASES 地域,近隣地域,学区,エリア
HIGHSCHOOLS TABLE INTEREST DESCRIPTION 学校の特色や興味分野
OBJECT_NAME OBJECT_TY COLUMN_NAME ANNOTATION_NAME ANNOTATION_VALUE
-------------------- --------- -------------------- ------------------------------ ------------------------------
HIGHSCHOOLS TABLE INTEREST ALIASES 特色,専門分野,重点分野,興味分
野
37行が選択されました。
SQL>
Anotation_name に DATA_TOOLS_INGEST_fieldName という名前と annotation_value に列名が入っていますが、これは、DB 側が勝手に作って設定している annotation になります。
Annotation を設定するとその情報が、添付されて LLM に渡されます。
Annotation のルールをユーザ側で定義して、統一することで管理が楽になります。
なお、Comment と Annotation は、同時利用が、可能です。
以上、Select AI の精度を上げる説明でした。
余談
既存の DB を Select AI で使えるようにするために、comment や annotation をつけるのは、かなり大変な作業だと思います。 また、昔に作られてドキュメントなどが不足している DB であれば尚更です。
今後、DB を作る際には、LLM が理解しやすいように、適切なテーブル名や列名をつけることが重要だと感じました.
一方で、LLM が賢くなって RDB の全てのテーブルを参照して、各テーブルや列の意味を理解してくれるようになる日は、すぐにくるような気もします。
参考記事・ドキュメント
以上