ナレッジと Agno エージェントでそれを使用する方法を理解します。ナレッジは、より良い意思決定を可能にするためにエージェントのコンテキストに追加できる、ドメイン固有のコンテンツを保存します。
Agno 2.x : Learn : エージェント – ナレッジ (参照可能な知識)
作成 : クラスキャット・セールスインフォメーション
作成日時 : 10/30/2025
バージョン : Agno 2.2.1
* 本記事は docs.agno.com の以下のページを独自に翻訳した上で、補足説明を加えてまとめ直しています。スニペットはできる限り日本語を使用しています :
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

Agno 2.x : Learn : エージェント – ナレッジ (参照可能な知識)
ナレッジ (参照可能な知識) と Agno エージェントでそれを使用する方法を理解します。
ナレッジは、より良い意思決定を可能にするためにエージェントのコンテキストに追加できる、ドメイン固有のコンテンツを保存します。
Info : Agno は、様々な形式のコンテンツをサポートする、汎用的なナレッジ・ソリューションを提供しています。See more details in the knowledge documentation.
エージェントはこのナレッジを実行時に検索して、より良い意思決定を行い、より正確なレスポンスを提供することができます。このオンデマンドな検索のパターンはエージェント型 RAG と呼ばれます。
例 : Text2Sql エージェントを構築している場合、テーブル・スキーマ、カラム名、データ型、クエリーの例、等をエージェントに提供して、最適な SQL クエリーを生成する支援をする必要があります。
これをすべてシステムメッセージに配置するのは現実的ではないため、代わりに、この情報をナレッジとして保存し、エージェントが実行時に参照できるようにします。
この情報を使用して、エージェントは最適な SQL クエリーを生成できるようになります。これは動的 few-shot 学習と呼ばれます。
エージェント向けナレッジ
Agno エージェントはデフォルトで、エージェント型 RAG を使用します、つまりエージェントにナレッジを提供する場合、実行時に、このナレッジベースを検索して、タスクを達成するために必要な特定の情報を取得します。
例えば :
import asyncio
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.db.postgres.postgres import PostgresDb
from agno.knowledge.embedder.openai import OpenAIEmbedder
from agno.knowledge.knowledge import Knowledge
from agno.vectordb.pgvector import PgVector
db = PostgresDb(
db_url="postgresql+psycopg://ai:ai@localhost:5432/ai",
knowledge_table="knowledge_contents",
)
# Knowledge インスタンスの作成
knowledge = Knowledge(
name="Basic SDK Knowledge Base",
description="Agno 2.0 Knowledge Implementation",
contents_db=db,
vector_db=PgVector(
table_name="vectors",
db_url="postgresql+psycopg://ai:ai@localhost:5432/ai",
embedder=OpenAIEmbedder(),
),
)
# URL からナレッジベースに追加
asyncio.run(
knowledge.add_content_async(
name="Recipes",
url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf",
metadata={"user_tag": "Recipes from website"},
)
)
agent = Agent(
model=OpenAIChat(id="gpt-4o"),
name="My Agent",
description="Agno 2.0 Agent Implementation",
knowledge=knowledge,
search_knowledge=True,
)
agent.print_response(
"鶏肉とガランガルを使ったココナッツミルク入りスープはどのように作ればいいですか?",
markdown=True,
)
出力例
┏━ Message ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ ┃ ┃ 鶏肉とガランガルを使ったココナッツミルク入りスープはどのように作ればいいですか? ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┏━ Tool Calls ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ ┃ ┃ • search_knowledge_base(query=鶏肉 ガランガル ココナッツミルク スープ レシピ) ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┏━ Response (13.8s) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ ┃ ┃ 鶏肉とガランガルを使ったココナッツミルク入りのスープの作り方について、具体的なレシピは見つかりませんでしたが、タイの人気料理「トムカーガイ(Tom ┃ ┃ Kha Gai)」がこの料理によく似ています。以下は、一般的なトムカーガイの作り方です: ┃ ┃ ┃ ┃ 材料 ┃ ┃ ┃ ┃ • 鶏むね肉またはもも肉:約250g ┃ ┃ • ココナッツミルク:400ml ┃ ┃ • ガランガル(スライス):3〜4枚 ┃ ┃ • レモングラス(細かく切る):2本 ┃ ┃ • カフィアライムリーフ:3枚 ┃ ┃ • マッシュルーム:100g ┃ ┃ • タマネギ(薄切り):1個 ┃ ┃ • 赤唐辛子(お好みで):1~2本 ┃ ┃ • 鶏ガラスープ:500ml ┃ ┃ • ライムジュース:大さじ2 ┃ ┃ • ナンプラー:大さじ2 ┃ ┃ • 砂糖:小さじ1 ┃ ┃ • 香菜(飾り用) ┃ ┃ ┃ ┃ 手順 ┃ ┃ ┃ ┃ 1 下ごしらえ: ┃ ┃ • 鶏肉は食べやすい大きさに切ります。 ┃ ┃ • マッシュルームは適当な大きさに切ります。 ┃ ┃ • レモングラスは軽く叩いてから細かく刻みます。 ┃ ┃ 2 スープを作る: ┃ ┃ • 鍋に鶏ガラスープを入れ、ガランガル、レモングラス、カフィアライムリーフ、タマネギを加えて火にかけます。中火で煮ます。 ┃ ┃ • スープが沸騰したら、鶏肉を加えてしっかりと火を通します。 ┃ ┃ 3 味付け: ┃ ┃ • ココナッツミルク、マッシュルーム、ナンプラー、ライムジュース、砂糖を鍋に加えて調味します。 ┃ ┃ • 味を見て、必要ならもう少しライムジュースやナンプラーを追加します。 ┃ ┃ • お好みで赤唐辛子を加えると辛味が増します。 ┃ ┃ 4 仕上げ: ┃ ┃ • スープを器に注ぎ、香菜を飾って完成です。 ┃ ┃ ┃ ┃ このレシピをベースにして、お好みで調整してみてください。 ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
以下の方法で、エージェントにナレッジベースへのアクセス権を与えることができます :
- search_knowledge=True を設定して search_knowledge_base() ツールを Agent に追加できます。Agent にナレッジを追加する場合、デフォルトで search_knowledge は True になりまう。
- add_knowledge_to_context=True を設定して、ユーザメッセージに基づいて、ナレッジベースからのリファレンスを Agent のコンテキストに自動的に追加できます。これは従来の RAG アプローチです。
ナレッジの検索取得のカスタマイズ
ナレッジベース検索を完全に制御する必要がある場合、次のシグネチャを持つ knowledge_retriever 関数を渡すことができます :
def knowledge_retriever(agent: Agent, query: str, num_documents: Optional[int], **kwargs) -> Optional[list[dict]]:
...
カスタム retriever によりエージェントを設定する方法の例 :
def knowledge_retriever(agent: Agent, query: str, num_documents: Optional[int], **kwargs) -> Optional[list[dict]]:
...
agent = Agent(
knowledge_retriever=knowledge_retriever,
search_knowledge=True,
)
この関数は search_knowledge_base() の実行中に呼び出され、Agent がナレッジベースからリファレンスを取得するために使用されます。
ナレッジベース
ナレッジ・コンテンツは、”Contents DB” で追跡され、”Vector DB” でベクトル化され保存されます。
コンテンツ・データベース
Contents DB は、ナレッジベースに追加するあらゆるコンテンツの名前、説明、メタデータとその他の情報を保存するデータベースです。
This data is best displayed on the knowledge page of the AgentOS UI.
ベクトルデータベース
ベクトルデータベースは濃密な情報から関連性の高い結果を素早く検索するための最適なソリューションを提供します。
コンテンツの追加
コンテンツがナレッジベースに追加される際の、コンテンツの通常の処理方法は :
- コンテンツをパースする
リーダーは挿入されるコンテンツの種類に基づいてコンテンツをパースするために使用されます。
- 情報のチャンク化
コンテンツはより小さいチャンクに分割されて、検索クエリーが関連する結果だけを返すことを確実にします。
- 各チャンクを埋め込む
チャンクは埋め込みベクトルに変換されて、ベクトルデータベースに保存されます。
例えば、PDF をナレッジベースに追加するには :
...
knowledge = Knowledge(
name="Basic SDK Knowledge Base",
description="Agno 2.0 Knowledge Implementation",
vector_db=vector_db,
contents_db=contents_db,
)
asyncio.run(
knowledge.add_content_async(
name="CV",
path="cookbook/knowledge/testing_resources/cv_1.pdf",
metadata={"user_tag": "Engineering Candidates"},
)
)
See more details on Loading the Knowledge Base.
例: エージェント型 RAG エージェント
PDF から質問に答える RAG エージェントを構築しましょう。
- データベースのセットアップ
コンテンツデータベースとベクトルデータベースの両方として、Postgres を使用しましょう。
必要なパッケージのインストール :
pip install -U pgvector pypdf psycopg sqlalchemy - エージェント型 RAG の実装
以下の内容で、ファイル agentic_rag.py を作成します。
agentic_rag.py
import asyncio from agno.agent import Agent from agno.models.openai import OpenAIChat from agno.knowledge.knowledge import Knowledge from agno.vectordb.pgvector import PgVector from agno.db.postgres import PostgresDb db_url = "postgresql+psycopg://ai:ai@localhost:5432/ai" db = PostgresDb( db_url=db_url, knowledge_table="knowledge_contents", ) knowledge = Knowledge( contents_db=db, vector_db=PgVector( table_name="recipes", db_url=db_url, ) ) agent = Agent( model=OpenAIChat(id="gpt-5-nano"), db=db, knowledge=knowledge, markdown=True, ) if __name__ == "__main__": asyncio.run( knowledge.add_content_async( name="Recipes", url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf", metadata={"user_tag": "Recipes from website"} ) ) # Create and use the agent asyncio.run( agent.aprint_response( "鶏肉とガランガルを使ったココナッツミルク入りスープはどのように作ればいいですか?", markdown=True, ) ) - エージェントの実行
python agentic_rag.py出力例
┏━ Message ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ ┃ ┃ 鶏肉とガランガルを使ったココナッツミルク入りスープはどのように作ればいいですか? ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┏━ Response (26.1s) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ ┃ ┃ 鶏肉とガランガルを使ったココナッツミルク入りスープ(トム・カー・ガイ風) ┃ ┃ ┃ ┃ おすすめの完成像 ┃ ┃ ┃ ┃ • 体温まる、香り高い辛さ控えめのスープ ┃ ┃ • ガランガルとレモングラスの香り、ココナッツミルクのまろやかさが相性抜群 ┃ ┃ ┃ ┃ 材料(4人分) ┃ ┃ ┃ ┃ • 鶏もも肉 400 g(皮なし・一口大に切る) ┃ ┃ • ココナッツミルク缶 400 ml ┃ ┃ • チキンブロス(または水)600 ml ┃ ┃ • ガランガル(薄切り)3–4 cm程度 ┃ ┃ • レモングラス 2本(たたいて香りを出す) ┃ ┃ • カフィアライムリーフ 4枚 ┃ ┃ • マッシュルーム(しめじ・エリンギ・椎茸など)200 g、薄切り ┃ ┃ • 唐辛子(鷹の爪)1–2本、薄切り(お好みで) ┃ ┃ • ナンプラー 2–3大さじ ┃ ┃ • ライム汁 1–2大さじ(味を見て調整) ┃ ┃ • 砂糖 小さじ1/2(お好みで) ┃ ┃ • サラダ油 小さじ1 ┃ ┃ • 飾り用:香菜(コリアンダー)適量、ライムくし切り ┃ ┃ ┃ ┃ 作り方 ┃ ┃ ┃ ┃ 1 準備 ┃ ┃ ┃ ┃ • ガランガルは薄切り、レモングラスは叩いて香りを出しやすいように割る。 ┃ ┃ • カフィアライムリーフは手で軽くちぎる。 ┃ ┃ ┃ ┃ 2 香りづけ ┃ ┃ ┃ ┃ • 鍋にサラダ油を中火で熱し、ガランガルとレモングラスを1–2分、香りが立つまで炒める。 ┃ ┃ ┃ ┃ 3 鶏肉を炒める ┃ ┃ ┃ ┃ • 鶏肉を加え、表面が白くなるまでさっと炒める。 ┃ ┃ ┃ ┃ 4 出汁を煮る ┃ ┃ ┃ ┃ • チキンブロス(または水)を注ぎ、カフィアライムリーフを加えて中火で約10分煮る。 ┃ ┃ ┃ ┃ 5 具を追加 ┃ ┃ ┃ ┃ • マッシュルームを加え、さらに2–3分煮る。 ┃ ┃ ┃ ┃ 6 ココナッツミルクを加える ┃ ┃ ┃ ┃ • 弱火にしてココナッツミルクを加える。沸騰させないように、静かに温めるだけでOK、約3–5分。 ┃ ┃ ┃ ┃ 7 味を整える ┃ ┃ ┃ ┃ • ナンプラー、ライム汁、砂糖で味を整える。辛さ・酸味はお好みで調整してください。 ┃ ┃ ┃ ┃ 8 仕上げと盛り付け ┃ ┃ ┃ ┃ • 火を止めて器に盛り、香菜とライムを添える。好みで唐辛子を飾ってください。 ┃ ┃ ┃ ┃ コツと代替案 ┃ ┃ ┃ ┃ • ココナッツミルクは沸騰させると分離しやすいので、加えたら弱火で温める程度に留めると滑らかに仕上がります。 ┃ ┃ • ガランガルが手に入りにくい場合は、生姜を代用して香りを出すと近い風味になりますが、独特のスパイシーさはやや控えめになります。 ┃ ┃ • ヴィーガン版にする場合は、鶏肉を豆腐やきのこに置き換え、ブロスを野菜ブロスにしてください。ナンプラーの代わりに塩とライムで味を整えます。 ┃ ┃ ┃ ┃ アレンジ案 ┃ ┃ ┃ ┃ • 野菜を増やしたいとき: ズッキーニ、パプリカ、コーンなどを追加しても美味しいです。 ┃ ┃ • 辛さ控えめ: 唐辛子を抜くか、少なめにする。 ┃ ┃ ┃ ┃ よろしければ、使用できる材料(鶏肉なしのベジ版、辛さの希望、分量の単位など)を教えてください。ぴったりのレシピに調整します。 ┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
以上