😽

LangChain と Vector Serach を組み合わせた簡易RAG

2024/05/16に公開

今日は前回触れたVector Searchを活用しOpenAIと連携させた簡易RAGを作成していきます。
https://zenn.dev/kameping/articles/13086a865619b3
文書の構造解析などのライブラリにはLangChainを使います。

LangChain とは

ChatGPTにかわいい感じで解説してもらうと以下のようです。

LangChainって、超デカイ言語モデルを使ってアプリを作るためのすごいフレームワークなの〜!そのモデルは、めっちゃデータでトレーニングされてて、質問に答えたり、テキストから画像を作ったりするんだよ〜♪LangChainは、その情報を自分好みにカスタマイズしたり、正確さや関連性をめっちゃアップさせるためのツールを提供してるの!開発者は、LangChainのコンポーネントを使って新しいプロンプトチェーンを作ったり、既存のテンプレートをカスタマイズしたりできるんだよ〜!それに、LLMが再トレーニングしなくても新しいデータにアクセスできるコンポーネントもLangChainにはあるんだよ〜!めっちゃすごいでしょ〜?!

単純に言うと自然言語解析系アプリを開発するのに便利なツール群です。

さっそくやってみる

TiDB Vector Search用のマニュアルがLangChain側で準備されているのでこちらをまずはやっていきます。
https://python.langchain.com/v0.1/docs/integrations/vectorstores/tidb_vector/

前提条件

・TiDB Serverless Vector Search へのアクセス
現在Private Beta中なのでこちらから申し込んで待ちましょう!もしくはお近くのTiDB社員さんに頼み込みましょう。
https://tidb.cloud/ai
・Python3 実行環境
色々な記事があるのでこの記事からはその手順は割愛します。
・OpenAIアカウントとAPI Key
初めてアカウントを作成すると5ドル分のクレジットが付与されます。
・TiDBClusterへの接続文字列(パスワード認証)

このファイルを以下のpyファイルと同じ場所に保存しておきます。
https://frontiernerds.com/files/state_of_the_union.txt

以上の準備が出来たらまずは何も考えずに以下を実行します。

pip install --upgrade --quiet langchain
# Here we useimport getpass
import getpass
import os

from langchain.text_splitter import CharacterTextSplitter
from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import TiDBVectorStore
from langchain_openai import OpenAIEmbeddings

os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:")
# copy from tidb cloud console
tidb_connection_string_template = "mysql+pymysql://<userid>:<PASSWORD>@<host>:4000/test?ssl_ca=/etc/ssl/cert.pem&ssl_verify_cert=true&ssl_verify_identity=true"
# tidb_connection_string_template = "mysql+pymysql://root:<PASSWORD>@34.212.137.91:4000/test"
tidb_password = getpass.getpass("Input your TiDB password:")
tidb_connection_string = tidb_connection_string_template.replace(
    "<PASSWORD>", tidb_password
)

loader = TextLoader("state_of_the_union.txt")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

embeddings = OpenAIEmbeddings()

TABLE_NAME = "semantic_embeddings"
db = TiDBVectorStore.from_documents(
    documents=docs,
    embedding=embeddings,
    table_name=TABLE_NAME,
    connection_string=tidb_connection_string,
    distance_strategy="cosine",  # default, another option is "l2"
)

query = "What did the president say about Ketanji Brown Jackson"
docs_with_score = db.similarity_search_with_score(query, k=3)

for doc, score in docs_with_score:
    print("-" * 80)
    print("Score: ", score)
    print(doc.page_content)
    print("-" * 80)

<userid><host>は皆さん固有のTiDB Serverless接続文字列に入れ替えておきます。
実行は

python test.py

で行えます。
OpenAI API Key:Input your TiDB password:の入力が求められますので
それぞれコピーします。画面には何も表示されませんがちゃんと入っています。

OpenAI API Key:
Input your TiDB password:
Created a chunk of size 1163, which is longer than the specified 1000        
Created a chunk of size 1015, which is longer than the specified 1000        
--------------------------------------------------------------------------------
Score:  0.21850067576729626
As we take the fight to al-Qaida, we are responsibly leaving Iraq to its people. As a candidate, I promised that I would end this war, and that is what I am doing as president. We will have all of our combat troops out of Iraq by the end of this August. We will support the Iraqi government as they hold elections, and continue to partner with the Iraqi people to promote regional peace and prosperity. But make no mistake: This war is ending, and all of our troops are coming home. Tonight, all of our men and women in uniform -- in Iraq, Afghanistan and around the world -- must know that they have our respect, our gratitude and our full support. And just as they must have the resources they need in war, we all have a responsibility to support them when they come home. That is why we made the largest increase in investments for veterans in decades. That is why we are building a 21st century VA. And that is why Michelle has joined with Jill Biden to forge a national commitment to support military families.

Even as we prosecute two wars, we are also confronting perhaps the greatest danger to the American people -- the threat of nuclear weapons. I have embraced the vision of John F. Kennedy and Ronald Reagan through a strategy that reverses the spread of these weapons and seeks a world without them. To reduce our stockpiles and launchers, while ensuring our deterrent, the United States and Russia are completing negotiations on the farthest-reaching arms control treaty in nearly two decades. And at April's nuclear security summit, we will bring 44 nations together behind a clear goal: securing all vulnerable nuclear materials around the world in four years, so that they never fall into the hands of terrorists.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Score:  0.2233564355947777
So I know the anxieties that are out there right now. They're not new. These struggles are the reason I ran for president. These struggles are what I've witnessed for years in places like Elkhart, Ind., and Galesburg, Ill. I hear about them in the letters that I read each night. The toughest to read are those written by children asking why they have to move from their home, or when their mom or dad will be able to go back to work.

For these Americans and so many others, change has not come fast enough. Some are frustrated; some are angry. They don't understand why it seems like bad behavior on Wall Street is rewarded but hard work on Main Street isn't, or why Washington has been unable or unwilling to solve any of our problems. They are tired of the partisanship and the shouting and the pettiness. They know we can't afford it. Not now.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Score:  0.22337183612047307
Madame Speaker, Vice President Biden, members of Congress, distinguished guests, and fellow Americans:

Our Constitution declares that from time to time, the president shall give to Congress information about the state of our union. For 220 years, our leaders have fulfilled this duty. They have done so during periods of prosperity and tranquility. And they have done so in the midst of war and depression; at moments of great strife and great struggle.

It's tempting to look back on these moments and assume that our progress was inevitable, that America was always destined to succeed. But when the Union was turned back at Bull Run and the Allies first landed at Omaha Beach, victory was very much in doubt. When the market crashed on Black Tuesday and civil rights marchers were beaten on Bloody Sunday, the future was anything but certain. These were times that tested the courage of our convictions and the strength of our union. And despite all our divisions and disagreements, our hesitations and our fears, America prevailed because we chose to move forward as one nation and one people.

Again, we are tested. And again, we must answer history's call.

One year ago, I took office amid two wars, an economy rocked by severe recession, a financial system on the verge of collapse and a government deeply in debt. Experts from across the political spectrum warned that if we did not act, we might face a second depression. So we acted immediately and aggressively. And one year later, the worst of the storm has passed.

But the devastation remains. One in 10 Americans still cannot find work. Many businesses have shuttered. Home values have declined. Small towns and rural communities have been hit especially hard. For those who had already known poverty, life has become that much harder.
--------------------------------------------------------------------------------

"What did the president say about Ketanji Brown Jackson"という質問に対して、読み込んだstate_of_the_union.txtの中の記載で近しいものをピックアップしています。この例では3つ表示されていますが、前回の記事で解説したコサイン類似度を用いていますので、数字が1にちかければ近いほど関連していると判断されています。

なにをやっているか?

さて実際に見ていきましょう。

os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:")
# copy from tidb cloud console
tidb_connection_string_template = "mysql+pymysql://4JYpfj5Y7etkbg1.root:<PASSWORD>@gateway01.eu-central-1.prod.aws.tidbcloud.com:4000/test?ssl_ca=/etc/ssl/cert.pem&ssl_verify_cert=true&ssl_verify_identity=true"
# tidb_connection_string_template = "mysql+pymysql://root:<PASSWORD>@34.212.137.91:4000/test"
tidb_password = getpass.getpass("Input your TiDB password:")
tidb_connection_string = tidb_connection_string_template.replace(
    "<PASSWORD>", tidb_password
)

ここは簡単です。TiDBおよびOpenAIへの接続を処理しています。

loader = TextLoader("state_of_the_union.txt")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

1+2行目でドキュメントを読み込みます。その後3+4行目で適切な大きさ(チャンクサイズ)でドキュメントを分割します。ドキュメントを細かく分割すればするほど詳細な内容が回答に含まれ、大きく分割すればするほど概要が出力される傾向があるようです。以下のブログが非常に参考になります。
https://crossx-10-tf.com/blog/pinecone_langchain/
chunk_overlapは文字列を分割する際に、複数の文字列でどれぐらい文字列を重複させるかを指示します。例えば主語となるような重要な文字列が繰り返し出力される場合それを複数の分割された文字列に含めやすくなります。

embeddings = OpenAIEmbeddings()

これはLangchainを使う際の宣言で今からOpenAIを使うぞ!という意味です。

TABLE_NAME = "semantic_embeddings"
db = TiDBVectorStore.from_documents(
    documents=docs,
    embedding=embeddings,
    table_name=TABLE_NAME,
    connection_string=tidb_connection_string,
    distance_strategy="cosine",  # default, another option is "l2"
)

TiDB Serverless に対してsemantic_embeddingsというテーブルを作成します。
documents=docsにより先ほど分割した文書を挿入します。その際embedding=embeddingsによりOpenAIを呼び出し分割したドキュメントをベクトル化した値を生成して同時に投入しています。
distance_strategy="cosine"はコサイン類似度を用いるという意味です。
TiDBのコンソールでは以下のようなテーブルが作成されたことが確認できます。

USE test; SELECT * FROM test.semantic_embeddings;


embeddingを見るとわかりますがものすごい高次元のベクトルが生成されています。

[-0.030333733,-0.02388421,0.017893493,-0.028157676,-0.0021449253,-0.016910335,-0.0071901698,-0.011502961,0.0072491593,-0.0125909895,0.014013293,0.0042538014,0.003480383,0.015297955,-0.018968415,-0.00085780624,0.030962955,0.00087665016,0.0056564417,-0.03285062,-0.02107893,-0.0001313951,-0.008743561,0.0109655,-0.008514157,-0.0050337743,0.038618486,-0.0022088306,0.03552481,-0.02172126,-0.0060103787,-0.0070984084,-0.03707165,-0.0021776971,-0.04126646,0.000033079203,-0.0048436965,-0.00018546886,0.025142653,-0.02540483,0.010434594,-0.011430862,-0.011149024,0.005951389,-0.004532363,0.009156488,-0.029049072,-0.021983435,-0.021223126,0.029389901,0.0021088761,0.021773694,-0.04483205,-0.010854076,-0.005581066,0.01026418,-0.021904783,0.029652076,-0.024775608,-0.017316706,-0.013698682,0.009307238,-0.027423583,0.004034229,-0.029573424,-0.02085608,-0.010336278,0.008743561,0.00521402,0.017841058,0.072517805,0.03361093,0.0031526634,0.005790807,0.017224945,0.006167684,-0.015809197,-0.0032198457,-0.010565682,0.0028954034,0.018824218,-0.015166867,-0.008487939,-0.020882297,0.013777335,-0.005764589,-0.024657628,0.014930909,-0.027213842,-0.009766046,0.020803645,-0.0049354583,0.01199454,0.037858177,0.019492766,0.027266277,-0.010749205,0.019322352,-0.0028036418,-0.033558495,0.0002304279,-0.0019220759,-0.023254989,-0.007878381,-0.010808195,-0.020161314,-0.015573239,-0.016621942,0.001103596,-0.017880386,0.013764227,0.0038834782,0.0030674562,-0.028577156,0.024474105,0.007891489,-0.024251256,0.0069083306,0.009969233,-0.005086209,0.0058399644,0.014091946,0.01038216,0.014957126,-0.013246429,-0.007616205,-0.02030551,-0.00036540744,0.0043226224,-0.0029035963,0.011430862,0.0034181161,0.01816878,-0.006479018,-0.007740739,0.027816847,0.0041259904,-0.017303599,-0.03801548,-0.023268096,0.018745566,0.01976805,0.006118526,0.012630316,0.0026102872,0.013095678,0.041790813,0.009248249,0.011778245,0.0050403285,0.006662541,-0.01415749,0.027266277,0.002716796,0.010473921,0.009739828,0.0143803395,0.011935551,-0.01329231,-0.016268004,0.009752938,-0.013685574,0.020816753,-0.0026938557,-0.0077997283,0.015612566,0.00027774242,0.0035688672,0.005358217,0.022009654,0.031723265,0.024828043,0.0018909426,0.027161406,-0.027292496,0.013154668,-0.021262452,0.022245612,-0.022730637,-0.012741741,0.008350297,0.0005726901,0.022756854,0.030307516,-0.0027364593,0.003880201,0.028603373,0.013285756,0.006229951,-0.011791354,-0.0050239423,0.0267026,0.007891489,-0.010670552,-0.634675,0.024775608,0.0063544847,-0.008225763,-0.018850435,0.02063323,0.0022022761,0.0054237605,-0.025090218,-0.0037917166,-0.010637781,0.007177061,0.035996728,-0.029389901,-0.00029187533,-0.016608832,0.0049551213,-0.006462632,-0.015035779,-0.0040702783,-0.029389901,0.010690216,-0.01934857,0.019689398,0.0068034604,0.028577156,0.009156488,-0.020869188,0.0040211203,-0.012459902,-0.0032427863,0.022743745,-0.015507695,0.009399,0.052802194,-0.0043226224,-0.008330634,0.015940284,0.003935913,0.034921806,-0.02831498,-0.027318712,0.029101508,0.0016066458,0.0034082846,0.016136916,0.003105144,0.00028450164,0.0057449257,0.0019597635,0.008933638,0.019165047,0.00047560318,-0.0144589925,-0.000022057071,0.007694858,-0.003316523,-0.03932636,0.009097498,0.00021404191,0.007491672,-0.0046929456,-0.021760587,-0.005168139,-0.028288763,0.041004285,-0.0035229865,0.011968322,0.011955214,0.005430315,-0.01117524,0.02410706,-0.0010347748,-0.020449707,0.012951481,-0.009530088,0.026047159,-0.009169596,-0.020056443,0.02540483,-0.0066887587,-0.014734277,-0.0145769715,0.0032984985,0.003206737,-0.008107784,-0.02278307,0.006334821,0.009254803,-0.01232226,-0.0005939919,0.00972672,-0.013174331,-0.016910335,0.0034672741,0.018299866,-0.0065609477,0.0012346839,0.024775608,0.003814657,-0.02994047,-0.017474012,0.015651891,0.013285756,-0.0015001368,0.030019123,0.0038867553,0.0032853899,0.03219518,-0.023202553,0.009005737,-0.008251981,-0.0032837512,-0.015769871,0.0063938107,-0.023137009,0.010650889,0.0063544847,-0.01675303,-0.010991718,-0.00009852073,0.024408562,-0.0013821577,-0.03298171,0.015035779,0.017264271,0.026125813,-0.0043783346,-0.0002974056,-0.021878565,0.008828768,-0.01112936,0.042760864,-0.004679837,0.011745473,-0.0020744654,0.0036016393,-0.03046482,-0.005685936,-0.036809474,-0.02194411,0.004568412,-0.013777335,-0.009575969,-0.008520711,-0.006580611,0.015494587,0.009340011,-0.01481293,-0.010231408,0.0012223944,-0.0015722351,-0.018312976,-0.0063249897,0.0024660905,-0.0054532555,-0.022311155,-0.011443971,-0.03125135,-0.0064069196,0.005279564,0.038094133,0.015796088,-0.00086272205,-0.025011566,0.012282933,-0.023608925,0.016818574,-0.0037917166,-0.021563955,0.02528685,-0.0014517981,0.010886847,0.009307238,0.018719347,0.022193177,-0.019728724,0.0078456085,0.0018614478,0.016346658,0.013462724,0.0055417395,-0.03434502,-0.015586348,0.025247524,-0.007380247,-0.005279564,-0.0028954034,-0.024041515,0.025784984,0.020777427,0.014249251,0.010775423,0.028262544,0.006069368,-0.008212655,-0.010067549,-0.022271829,0.010827858,-0.00913027,0.020659449,0.008678016,0.0043750573,0.015114431,0.012518891,-0.01587474,0.013272647,-0.010342833,0.0007754667,0.0016050071,0.0018499775,-0.039457448,-0.01448521,-0.0211838,0.020987168,0.021367323,-0.025313068,0.016163133,0.012243607,0.012368141,-0.00418498,-0.008304416,0.0071705068,-0.015756762,-0.013606921,0.01869313,-0.016792355,0.0003793355,0.0027544838,0.007491672,0.0056728274,0.01448521,-0.010749205,0.032536007,0.011987986,0.011496406,0.015179976,-0.033270102,0.03489559,0.00024578974,-0.0075637703,0.013685574,0.007898044,-0.0045225313,0.0061545754,0.012944927,0.042498685,-0.011417753,-0.010316615,0.0135938125,-0.0025447432,0.029704511,0.024264365,0.0041587627,0.010926174,-0.0045749666,0.015206194,0.023412293,0.02031862,0.040794544,0.034502327,0.0044569876,0.0039228043,-0.02321566,0.010624671,0.032011658,0.00024107879,0.0058235787,0.0019532093,-0.011883115,-0.0036049164,-0.0043062363,-0.0009176151,-0.032536007,0.039169054,0.023857992,-0.0021645883,-0.0040407833,0.0044766506,-0.00038978158,0.0070328643,-0.034423675,0.013056352,0.02540483,-0.0052074655,-0.010106875,0.016189352,-0.009405554,-0.0083371885,0.006197179,-0.00052885764,0.007177061,-0.023700686,0.014249251,-0.0001330337,-0.010480475,0.036704604,-0.02831498,0.020895407,-0.026230684,-0.0048076473,0.0043586716,-0.0077341846,0.012414021,0.0046634506,0.0072491593,-0.014013293,-0.0025611292,-0.014747386,-0.033112794,0.023294315,-0.019912247,0.015468369,0.026650164,0.00399818,-0.0061906246,-0.017539557,-0.033270102,0.018286757,0.002697133,-0.018968415,-0.024028407,-0.03704543,-0.011660266,0.11525246,0.007478563,-0.021983435,0.016005829,0.027869282,-0.008894311,-0.00075785175,-0.034056626,-0.01673992,-0.012184617,-0.016136916,0.0072688223,0.015153758,-0.019532092,0.015717436,0.0062758317,0.0054663643,-0.033243883,-0.01826054,-0.018653803,-0.01891598,0.023936644,0.027266277,0.042682208,-0.004565135,0.011535732,0.018876653,0.01816878,0.007898044,-0.023871101,-0.0060038245,0.002097406,-0.0054794727,0.036704604,-0.0038867553,0.004034229,-0.012525446,-0.009104053,0.010729542,0.0031297228,0.024447888,-0.0034934918,-0.0037327271,-0.010775423,0.0176051,-0.012060084,-0.008212655,0.021537736,-0.018417845,-0.01826054,0.02117069,-0.024028407,-0.011227676,0.009031954,-0.0011265364,0.0141443815,-0.01269586,-0.006682204,0.000936459,-0.01815567,-0.011319437,-0.005567957,0.008271644,-0.0017598547,-0.00050960405,-0.04234138,0.004611016,-0.0022792902,-0.013043243,-0.004883023,0.020711884,-0.0274498,-0.023097683,-0.0065511162,0.026951667,0.0027069645,-0.0058727367,0.002239964,0.0043914435,-0.010172418,0.0066101057,-0.048817124,0.003034684,-0.042708427,0.017421577,-0.004214475,-0.0071246256,-0.0020957673,-0.017211838,0.03489559,-0.0054172063,0.0010962223,0.007878381,-0.019178156,-0.001766409,0.0207381,0.0015869825,-0.0017254441,-0.014419666,0.0022612656,0.010251071,-0.019178156,-0.02452654,-0.0074654543,-0.0025807924,-0.0048371423,0.012361586,-0.0041390993,-0.0074851173,-0.03298171,0.030936738,-0.030753214,0.0032690037,0.0071901698,0.0009782432,0.0022448797,-0.0003279245,0.0015230771,0.0064691864,0.0013952665,-0.012250162,-0.021590171,0.018680021,0.023844883,-0.02464452,-0.008422395,0.0038998642,-0.022245612,-0.0066527096,-0.008461722,-0.0015804281,0.035603464,0.0011978154,-0.012230499,-0.010939282,-0.0013436506,-0.006098863,0.0134365065,-0.027607106,-0.01727738,-0.009811927,-0.017356033,-0.0025594907,-0.046405107,0.0076358686,-0.026794361,0.0011216205,0.011247339,-0.020462817,0.031723265,-0.0043357313,-0.026165139,-0.021459084,-0.0004583979,-0.0030543474,-0.00951698,0.018771783,-0.004483205,0.024356127,0.02549659,0.024146385,-0.0032100142,-0.015743652,-0.0013461085,0.020056443,-0.0065347305,0.0023120623,0.027423583,-0.01684479,0.010139647,-0.0074589,-0.0017270827,-0.028498502,-0.0066723726,0.010618118,0.0036147481,-0.013370963,-0.004565135,-0.017814841,-0.006397088,-0.001446063,0.010618118,-0.0132202115,0.02408084,-0.010290397,-0.036861908,0.031120261,-0.0032575335,0.032457355,0.00209249,0.018181887,-0.0021613112,0.008081567,0.002125262,0.007426128,-0.0077735106,-0.03607538,-0.017447796,0.0060398737,0.0022416024,0.02724006,0.03143487,-0.023897318,-0.0144589925,-0.0031608562,0.010991718,-0.02897042,0.0031526634,0.010775423,-0.0032903056,0.002905235,-0.022206284,-0.011850343,-0.0083175255,0.004883023,0.003749113,-0.0064036422,0.0042800186,0.01275485,-0.021865457,-0.006508513,-0.0030707333,0.019820485,-0.026768142,0.018208105,0.00063167966,0.010041331,-0.029783165,-0.0142230345,0.015166867,-0.004820756,0.026715709,0.026387988,-0.008029132,-0.010401823,0.009752938,0.023635143,-0.0073343664,-0.042420033,-0.008605919,-0.006229951,0.0040735556,0.012341923,-0.021419758,-0.0070721908,0.008507603,0.018824218,-0.0022710974,0.007721076,-0.019060176,-0.00951698,0.029704511,-0.0026053714,0.031277563,-0.026492858,-0.028236328,-0.029442336,-0.002097406,-0.011627494,-0.01166682,-0.029416118,0.031487305,-0.0051714163,0.011987986,-0.009582523,-0.019269917,-0.010611563,-0.0137904445,0.00036192543,0.015730543,-0.025850529,-0.025129545,-0.018312976,0.026414206,-0.0026692767,-0.0009815204,-0.029468553,-0.010952392,-0.02636177,0.016608832,0.014013293,0.010060994,-0.032273833,-0.00044487946,0.015219302,-0.008396178,-0.0063217124,-0.0077800653,0.014944017,-0.005328722,-0.00029781525,0.0071311803,0.018876653,0.009090943,-0.0013493857,-0.013698682,-0.009110606,0.031933002,-0.005525354,0.03347984,-0.0038408746,0.0052369605,-0.029232595,-0.011791354,0.0037196183,-0.014105055,0.009156488,-0.022599548,-0.04312791,-0.028708244,0.005764589,-0.0064069196,0.012086302,-0.010119983,0.0015779702,0.013449616,0.01026418,0.0026627223,-0.006711699,0.030202646,-0.003798271,0.009811927,0.0045520263,-0.007760402,-0.011699593,-0.01242713,0.0267026,0.0057383715,-0.024893587,0.0010331363,-0.01362003,0.020082662,0.0010994995,0.0059874384,-0.016517071,-0.008579701,-0.0033689584,0.022651983,-0.00055589445,-0.006531453,0.0007525263,0.003223123,0.040768325,0.004696223,-0.011116251,-0.027711976,-0.023831775,0.019846704,-0.021314887,-0.018929088,0.000591534,0.026165139,0.009916797,0.0020548024,-0.026309336,-0.01053291,-0.03825144,-0.0027233504,0.013069461,0.03544616,0.029311247,0.004312791,-0.0036114708,0.047401372,0.00029044156,0.022101415,-0.00036131093,-0.01860137,0.002048248,0.015324173,0.000060679347,0.014655624,-0.017080748,0.013738009,-0.009163042,-0.00080987724,-0.0019646795,0.014105055,-0.020108879,0.0011380066,0.020895407,0.00972672,0.011575059,0.010624671,-0.0022465184,-0.02364825,0.01912572,0.018404737,0.008520711,-0.03468585,-0.03738626,-0.009864362,-0.015402825,0.022298047,-0.011155577,-0.020724991,-0.007380247,-0.027711976,-0.0012699137,0.015507695,-0.021406649,0.0036507973,0.0060529825,-0.014681841,-0.006724808,0.022402916,-0.00083650445,0.01481293,0.0133185275,-0.012492674,0.032903053,-0.0013125173,0.0055417395,-0.023032138,0.038487397,-0.015114431,-0.0009405555,0.022612657,0.016281113,-0.0015189807,-0.0081405565,-0.0020138372,0.006927994,-0.012931818,-0.00043422857,-0.004099773,0.0059743295,-0.014721168,-0.010067549,0.024067733,-0.007596542,-0.032798182,-0.0067837974,-0.0014255806,0.0013280839,0.03956232,0.22316399,0.0023448342,0.019951573,0.033768233,0.015114431,0.014760494,0.020869188,0.0072163874,-0.02367447,0.010972055,-0.025273742,0.012735186,-0.0134365065,0.0051943567,-0.0009208923,-0.00581047,-0.030622127,0.0028249435,-0.012656534,0.04496314,-0.0036606288,-0.0010642696,-0.014013293,-0.009497316,0.021000277,0.023949753,-0.02052836,0.015914068,0.023910427,0.0131022325,-0.019401005,0.010703324,0.014013293,-0.00022346385,-0.0028380523,0.0037851622,-0.005066546,-0.01890287,0.008573147,-0.0058727367,0.0074523455,0.008940193,-0.010952392,-0.0071377344,0.008271644,0.0548996,-0.0144589925,-0.00863869,0.0037687763,0.017238054,-0.022507787,-0.01232226,0.004194812,0.027292496,0.017408468,-0.011437417,0.016543288,0.000054893047,-0.00025254895,0.015678108,0.011745473,0.037360042,-0.005092764,0.01803769,-0.016385984,0.012551663,0.009418664,0.025234414,0.014996452,-0.014524536,-0.005079655,0.012171509,-0.030962955,-0.0064757406,-0.016687484,-0.00017276971,0.008927084,0.034213934,0.016805464,0.0030690948,-0.0006697771,-0.018024582,-0.015494587,-0.009484207,0.0072360504,-0.01362003,0.0063708704,0.013659356,-0.014563862,0.0023890764,0.017985255,-0.0009987256,-0.016700594,-0.0065543936,0.006583888,0.032536007,-0.008704234,0.0004796997,-0.025876746,0.019532092,-0.009005737,0.04829277,0.0067084217,-0.0019974513,0.026951667,-0.026243791,-0.013842879,0.021537736,0.015717436,-0.015822304,0.02248157,-0.012151846,0.03125135,-0.011968322,0.0072557135,0.0011806102,-0.027292496,-0.02409395,-0.0020171145,0.0049551213,-0.024605194,-0.03306036,0.00045307245,0.010152755,0.008874648,-0.009851254,-0.045775883,-0.0069148852,0.009497316,-0.041423768,0.0074523455,-0.010303507,0.016071372,-0.03966719,-0.016674377,0.0013452893,0.0028511612,0.024814934,-0.015048888,0.0057547577,-0.0046274015,0.01232226,-0.0142623605,-0.013141559,0.000025731115,-0.02897042,0.03188057,-0.0042046434,-0.011673375,-0.014275469,-0.021157581,0.03528885,0.0040440606,-0.02236359,0.0076358686,-0.014236143,-0.0211838,-0.0036213025,0.025090218,0.017434686,-0.044989355,-0.012551663,0.03673082,-0.018024582,-0.0043783346,-0.007039419,-0.16422687,0.013174331,-0.012872829,-0.02291416,-0.0035164321,-0.02507711,0.027502235,-0.012453347,-0.008114339,0.008251981,0.009077835,0.009267912,-0.04559236,0.0061775157,0.010670552,-0.012269825,-0.0243168,0.015966501,0.0040735556,0.017880386,0.016713703,-0.010434594,-0.0053221676,-0.031277563,0.010290397,0.015284846,-0.017552665,0.02290105,0.013803553,-0.0132202115,-0.04152864,0.025706332,0.0017959039,0.011522624,0.0065543936,0.017382251,-0.0074720085,0.011378427,0.0019450163,0.025680114,0.02398908,0.0017369143,-0.0009176151,0.014393448,-0.006544562,0.01523241,0.0262569,0.00826509,-0.004529086,-0.0214853,0.002072827,-0.03403041,0.011686483,0.006606829,0.027790628,0.017670644,-0.004896132,0.0020777427,0.00399818,-0.015966501,-0.003124807,-0.028288763,0.009366228,-0.014957126,-0.004135822,-0.01944033,-0.009923352,-0.028236328,-0.04559236,0.010473921,0.0027036872,-0.0135151595,0.008822213,-0.015193084,-0.0056892135,-0.00073859823,-0.003149386,0.012414021,-0.0050239423,-0.0065740566,-0.0009307239,0.02408084,-0.019505875,0.0003791307,-0.0017303599,0.002194083,0.017565774,0.0015411017,0.0055908975,-0.023071464,-0.007078745,-0.011529178,-0.028341198,0.0060660914,0.00063536654,0.02149841,0.016268004,0.009687393,-0.008940193,-0.00475849,-0.0005321348,-0.008422395,-0.034607198,0.02583742,0.03455476,0.013738009,-0.0047257175,0.023740014,0.020895407,0.02549659,-0.0016451528,0.030543474,0.007163952,0.022979703,0.011811017,0.0328244,-0.01955831,-0.004827311,-0.006380702,-0.013279201,0.022730637,-0.0013878928,-0.049524996,-0.014734277,-0.0033591266,-0.01415749,-0.13360475,-0.044019308,-0.0042669103,0.024828043,0.029442336,0.038723357,-0.0024431502,0.025588352,-0.016700594,0.03219518,-0.004797816,-0.030123994,-0.0007250798,0.0028085576,0.029573424,-0.001552572,-0.016936552,-0.011516069,-0.010034776,0.017093858,-0.031094043,-0.024356127,0.007196724,-0.0012453347,-0.0028462454,-0.0141443815,-0.01890287,0.0033689584,0.004925627,0.02191789,-0.017093858,0.008645245,0.029573424,0.007694858,-0.007498226,0.0057875295,-0.020187533,-0.021432867,0.016582616,-0.018876653,0.00035168417,-0.014642515,-0.004198089,-0.057364054,0.017238054,-0.007091854,0.0031936283,-0.0007340921,-0.011634048,-0.014209925,-0.03219518,0.007760402,-0.026977884,-0.0020105601,-0.014091946,0.016635051,0.009549751,0.008841877,-0.0053254445,-0.00022858448,0.0027856173,0.014196817,-0.03586564,-0.0054663643,-0.016582616,-0.012715523,-0.006082477,-0.0145769715,0.0017336371,-0.033086576,-0.009136824,0.019138828,-0.033270102,0.029206378,-0.018955305,0.018509606,-0.035708334,-0.02172126,0.017775515,-0.02464452,-0.017329816,-0.00642986,-0.013089124,-0.0034508882,0.008560037,0.016228678,0.0067837974,-0.011522624,-0.0001932522,0.008940193,0.021734368,0.030779433,0.0076489775,-0.032693315,0.0005071462,0.008310971,-0.018850435,-0.0010175696,0.014983344,0.01782795,-0.021341104,-0.010047885,-0.0380417,0.029809382,0.004083387,0.007819391,-0.010447703,0.013377517,0.009589078,-0.00913027,-0.015782978,0.02076432,-0.01675303,0.04063724,0.025444156,0.009117161,-0.01673992,-0.019650072,0.030858085,0.012394358,0.011404645,0.023320531,0.01481293,-0.013305419,0.0131022325,-0.014996452,-0.012735186,0.019243699,-0.006724808,0.03552481,-0.0016230317,-0.03070078,-0.020279294,-0.00079881673,0.00907128,0.01903396,-0.005610561,-0.014249251,0.0012920348,0.0010085573,0.020672556,0.0037589448,-0.018352302,-0.037228953,0.00015423307,-0.033034142,-0.026243791,-0.008153665,0.00842895,0.028262544,-0.011942105,0.012800731,0.023582708,0.012164954,-0.00702631,-0.022271829,-0.00494529,-0.028026586,0.010192081,0.017539557,-0.01630733,-0.043416303,0.027213842,-0.006131635,0.01275485,-0.024002189,0.04310169,-0.0012395997,0.02322877,-0.013115342,0.005531908,-0.023975972,0.00869768,-0.024395453,-0.0022989535,-0.0024398728,0.0017369143,-0.0083568515,-0.02897042,-0.008854985,0.0022121076,0.038749572,0.011522624,-0.015822304,-0.020554578,0.0078259455,0.003411562,0.01673992,0.009713611,-0.0022465184,-0.0049223495,0.0054106517,-0.02291416,0.0019597635,-0.0074851173,-0.018312976,0.0016533458,0.019191263,0.014249251,0.006629769,-0.04420283,0.0062561687,0.023871101,-0.008881203,-0.012826948,-0.0044242153,-0.011201458,-0.00088238524,-0.002480838,-0.03046482,-0.014170599,0.048607383,0.026086487,0.01630733,0.017959038,0.013049797,-0.0012166593,0.0133971805,-0.017041422,-0.019807376,-0.007406465,0.018653803,0.013777335,0.013987076,0.016176242,-0.02364825,0.034816936,-0.0066985902,0.017028313,0.018090125,-0.009385891,0.0048731915,-0.025549026,0.011961768,-0.046824586,-0.012545109,-0.011109697,-0.026676381,0.027974151,-0.0032378703,0.017526448,0.032142743,-0.0033492951,0.002639782,-0.005181248,0.03607538,0.02658462,-0.010899956,0.0020040057,0.012001094,0.0042931275,0.031618394,-0.016490854,0.005066546,-0.013528268,-0.021786803,0.014970235,0.016281113,0.011922441,-0.018824218,0.0048797457,0.010624671,0.0025283573,0.009818481,-0.003023214,-0.02246846,-0.012315705,0.012866274,-0.02042349,-0.0031297228,-0.035131548,0.009877471,0.005204188,-0.015861632,0.014603189,0.005561403,0.00061611296,0.0011453802,0.026545294,0.016399091,0.0006419209,-0.012007649,0.032142743,-0.017408468,-0.044543657,-0.012014204,-0.0033099686,-0.012440239,-0.013305419,-0.009962678]

前回の記事でも触れましたが、ベクトルデータベースを使わなくてもPythonのnumpyライブラリのみでベクトル検索は可能です。しかしながらこのような高次元のデータをスムーズに取り扱うためにはやはりベクトルデータベースは必須と言えるでしょう。また、当然ですがチャンク数を少なくすればするほど多くの文字列に文書が分割されますので、レコード数は増えていきます。

query = "What did the president say about Ketanji Brown Jackson"
docs_with_score = db.similarity_search_with_score(query, k=3)

1行目で質問を定義し、2行目で質問を実行します。

for doc, score in docs_with_score:
    print("-" * 80)
    print("Score: ", score)
    print(doc.page_content)
    print("-" * 80)

その結果を画面に出力しています。なおk=3は類似度順に3つの回答を出力する、という意味です。k=1とすれば結果は一つだけになります。

日本語に変えてみる

英語じゃわかりづらいですね。では日本語に変えます。
state_of_the_union.txtの内容を以下に変えます。
https://ja.wikipedia.org/wiki/機動戦士ガンダム
段落は表題の文字列が邪魔になるので以下に削除したものを共有します。

『機動戦士ガンダム』(きどうせんしガンダム)は、1979年から放映された日本サンライズ制作のロボットアニメ。同作から創出された、バンダイナムコグループの象徴的なIP(知的財産)でもある。このガンダムIPを題材にしたガンダムシリーズの第1作目であることから、「初代ガンダム」「ファーストガンダム」の名で呼ばれることも多い。
『無敵超人ザンボット3』、『無敵鋼人ダイターン3』に続く日本サンライズのオリジナル作品第3作(ロボット第1期3部作の3作目)として、富野喜幸を監督に据え、玩具メーカーのクローバーをメインスポンサーとして企画・制作された。対象年齢を従来より引き上げた、ロボットものとしては最初のジュブナイルアニメである。ロバート・A・ハインラインのSF小説『宇宙の戦士』の影響を受けた作品ともいわれている。

戦争を舞台としたリアリティに富んだ人間ドラマと、ロボットを「モビルスーツ」(MS)と呼ばれる兵器の一種として扱う設定を導入したことで、1980年代初頭から半ばにかけての、後に「リアルロボットもの」と称されることになる一連のロボットアニメ変革の先駆けとなった。

メディアミックスによって重厚感のある世界が構築され、その情報量の膨大さは古今の物語史上で類例が無い。本作の宇宙世紀とは別世界という設定だったガンダム作品も『∀ガンダム』の「黒歴史」という設定で結合された結果、神話めいた壮大な宇宙史となった。
IP(知的財産)としてのガンダムは、映像作品を中心にガンプラ等のトイホビー、コンピュータゲーム、専門雑誌やコミック等の書籍、ネットワークコンテンツ、アミューズメントといった多角的な戦略を取り、日本を代表するIPに成長を遂げている。

2021年度のIP売上高は1,017億円で、ガンダム初の年商1000億円超えとなった。

2021年にはガンダムを世界最大級のIPに成長させる「ガンダムプロジェクト」が発足。2025年度のIP売上高1500億円を目標に、海外市場の拡大/グローバル戦略が推進される。第3代チーフガンダムオフィサー(CGO)の藤原孝史は、今後ガンダムを「IP」から「SP」(ソーシャルプロパティ=社会的アイコン)に進化させる旨を述べた。

書籍『IPのつくりかたとひろげかた』に於いてガンダムは「世界観IP」とも表現され、「ストーリーIP」から脱却した物として扱われている。著者はアムロ・レイやシャア・アズナブルが作品を背負っているのではなく、世界(宇宙世紀)のなかにアムロやシャアが存在すると表現した。
本作の企画の根底には『宇宙戦艦ヤマト』のヒットがあった。サンライズの山浦栄二は当時、『ヤマト』の制作会社であるオフィス・アカデミーからデータを入手、『ヤマト』の関連事業は一部の熱狂的なファンを相手にした商売であることがわかり、「ハイターゲットに絞って、30万から40万の熱狂的なファンをつかめば、それで十分に商売になる」という結論を得た。そこで本作は『ヤマト』と同じく中学生以上を取り込むことになった。

作品構成も『ヤマト』が意識されたが、そのままでは活劇的な展開になりにくいこととキャラクターの年齢が高いことが問題になり、『十五少年漂流記』から着想を得て、宇宙船に乗り込んだ少年少女が宇宙戦争の中で協力しながら生き延び成長するというストーリーが構想された。この時点では、主人公たちは宇宙空母(のちのホワイトベース)に乗り、宇宙戦闘機で異星人と戦うという設定だった。

ちょうどその頃、直前の2作品(『無敵超人ザンボット3』『無敵鋼人ダイターン3』)の営業成績がよかったことで、サンライズもスポンサーも気が緩んでいた。それに乗じて、監督の富野が自分のやりたかった「大人っぽい」企画をスポンサーには秘密のまま上手く通した。

このように当初の企画「フリーダム・ファイター」では、前作のようなロボットを登場させる予定はなかった。しかし、スポンサーであるクローバーからは空母の玩具を売っても商売にならないとして、ロボットも出すように要請があった。そこで、これまでの巨大ロボットとは異なる人型機動兵器である「モビルスーツ (MS)」が生み出された(詳細は「モビルスーツ#設定の経緯」を参照)。もともと舞台は宇宙であり、宇宙ステーションなどが活躍の舞台になる予定であったが、MSの身長が18メートルと設定されたため、より巨大な「スペース・コロニー」に変更された(詳細は「サイド (ガンダムシリーズ)#設定の経緯(スペース・コロニー)」を参照)。

この時点での仮題は「ガンボーイ」(別題: 機動鋼人ガンボーイ、宇宙戦闘団ガンボーイ、フリーダムファイター ガンボーイ)だった(「ガンボット」という名称も考案されたが、ロボット的過ぎるとして却下された)。これが当時人気を博したアメリカ映画『コンボイ』から「ガンボイ」に、さらにチャールズ・ブロンソンがテレビCMで流行語にした「う〜ん、マンダム」から「フリーダム」のダムとかけて『ガンダム』という名前が生み出された。最終決定となったこの『ガンダム』の名はタカラ(現タカラトミー)の沼本清海の発案によるものである。富野によると「ンのはいった四文字のタイトルの作品は当たる」というジンクスがあるという。

富野は「戦争」を題材にするに当たって、後年のテレビでの高橋杉雄との対談において南北戦争をそのサンプルにしたと語っている。

リアル志向
本作以前の1970年代当時は『宇宙戦艦ヤマト』、『ルパン三世』、『長浜ロマンロボシリーズ』といったティーンエイジャー層をターゲットにしたアニメ作品の盛り上がりによりアニメ視聴者層の対象年齢が広がりつつある時期ではあったが、ロボットアニメというジャンルだけはスポンサーである玩具メーカーが販売する関連商品の購買層が小学生以下に限られていたため、いわゆる「お子様向け」の内容を脱することができずにいた。
ところが本作では『ザンボット3』と『ダイターン3』の好調な販売成績を受け、スポンサーからの干渉が少なかったため、敵も味方も同じ人間どうしの「戦争」という、より現実感のある状況を描き出すことが可能となった。リアリズムあふれる作風は作画監督・キャラクターデザインの安彦良和の発言によると、富野が絵コンテとして参加した高畑勲監督作品『アルプスの少女ハイジ』『母をたずねて三千里』の影響が大きいと富野との対談で語っており、富野本人も「高畑、宮崎から受けた影響は大きい」と語っている。
現実感のある兵器
また、前述のとおり登場するロボットを「モビルスーツ」と呼んで、現実の兵器に近い描写を行ったのも本作の重要な試みの一つである。従来、主役ロボットには変形や合体など玩具として魅力的なギミックを備えることがスポンサーである玩具メーカーから求められており、本作の主役ロボットであるガンダムも試作品という設定を付して同様のガジェットを組み込まれた。
ところが本作ではさらに、敵軍のロボットに設定上「量産機」という概念を与え、ロボット描写のミリタリズムを高めた。レーダーや電波誘導兵器を攪乱・無効化するミノフスキー粒子という架空の粒子も設定され、ロボット同士の白兵戦に説得力を持たせた。また、機動戦士ガンダムはロボットが合体完了した後のあからさまな決めポーズが無く、さらに各ロボット固有の必殺技や止めの一撃用の決め技が無いのも従来のロボットアニメでは見られなかった特徴の一つである。
奥行きのある登場人物
主人公のアムロ・レイは、民間人の少年として突然に戦争に巻き込まれ、モビルスーツのパイロットとして戦う使命を負うこととなり、閉鎖的な極限状態に置かれるうち次第に疲弊する中で、上官にプライドを傷つけられて戦場から逃亡するが、そこで出会った敵将に勝ちたいという感情から戦線復帰する…という、それまでのアニメにない重厚でリアルな心理描写が、当時のアニメファンに受け入れられた。
主人公はもちろん、彼をサポートする人々や敵対する兵士、全体のプロットには直接触れない人物にいたるまで、その人物像がていねいに描かれた。また、必ずしも主人公サイドの連邦軍が一枚岩でない様子や、シャア・アズナブルの復讐劇の要素も交えて奥行きのあるドラマを展開。従来作品に比して作品世界が豊かになっている。
ニュータイプの概念
本作の重要なキーワードの一つが「人類の革新ニュータイプ」である。超能力にも似た特別な感覚を得た人々として設定されたニュータイプは、当初は主人公アムロに超人的活躍をさせるためのアイデアだったが、やがて宿敵シャアもまたニュータイプであることが明かされ、そして同じくニュータイプである少女 ララァ・スンとの出会いと3人の間で起こる悲劇を通じて、「人類の革新」とは何なのかという抽象的なテーマへと昇華された。
この結果、本作はロボットアニメという枠組を破綻させることなく、SFと哲学を盛り込み、現実味を持たせた物語や設定によって高年齢層の視聴に堪えうる作品作りが可能であることを示すこととなった。

キャラクターデザインはアニメーション・ディレクターとして作画の中心となった安彦良和が、メカニックデザインは主に大河原邦男が担当した。

企画は当初、「スタジオぬえ」の代表(当時)の高千穂遙がサンライズのスタッフに勧めていたハインラインの小説『宇宙の戦士』のコンセプトを参考に、総監督の富野善幸のプランも相まって進んでいた。その頃のサンライズ制作のアニメにはスタジオぬえが参加することが多かったが、そのデザインは線が多く複雑で、SF考証にもうるさかった。アニメーターとしてはシンプルなデザインに越したことはなく、テレビアニメにはあまり理屈を持ち込むと自由がなくなるため、それまでのスタジオぬえとの仕事の経験から自分が消耗することを恐れた作画監督の安彦良和は、「あえて『ぬえ』ではないところに発注したい」と発言した。当時、アニメ業界でメカデザインを手掛けていたのはスタジオぬえのほかにはタツノコプロ出身の中村光毅と大河原邦男が設立したデザインオフィス・メカマンしかなかった。また、安彦が「エンターテインメントを考えた場合、タツノコから来た人のほうがいいのではないか」と考えたため、美術に中村が、メカニックデザインには大河原が参加することが決まった。

声優のキャスティングは音響監督の松浦典良による。後年の富野のインタビューによれば、アムロ役の古谷徹、シャア役の池田秀一からA、B、Cといった端役に至るまでほぼ全員が「はまり役」であり、演技指導もほとんどしなかったという。

初回放送時の視聴率は名古屋地区で平均9.1%、関東地区で5.3%と振るわなかった。

視聴率低迷のため、スポンサーの要望によって量産型の他にいわゆる「やられメカ」を毎回出すことになり、試作機が投入されたという設定で グフやドムなどの新MSやモビルアーマー (MA) が登場したが視聴率は好転しなかった。

視聴率低迷は関連商品の不振につながり、スポンサーから「シャアという陰気なキャラクターがいけない」と指摘され作中でシャアを左遷したが、今度は「シャアが何で出ないのだ」という抗議の手紙が殺到した。こうした手紙は中高生のファンからであり、サンライズ側の当初の狙い通り、本作には中学生以上のファンがついていた。名古屋テレビの関岡渉によると左遷どころか殺す予定だったのをスタッフを説得して取りやめになったとある。

その後もテコ入れが試みられたが(後述)視聴率も売り上げも挽回できず、全52話の予定が全43話に短縮される形の打ち切りとなった。シリーズ途中で安彦良和が病気で現場を離れるなど、製作スタッフの疲弊も激しかった。

ところが打ち切りが決まった直後から人気が上昇。最終回でアムロは死ぬ予定だったが、関岡が人気の盛り上がりから再放送や続編制作が期待できるため反対して取りやめになった。また、放送当時からアニメ雑誌がたびたび熱意ある特集記事を組むなど、中高生、特に女子を中心に口コミで徐々に評判が高まった。放送回数は打ち切り決定当時の43話のままで終了したが、本放送終了後もアニメファンによる再放送要請嘆願署名が行われるなど熱意が衰えず、これらを受けてクローバーは再放送を決定した。こうして再放送、再々放送が重ねられ、世間一般へ本作が浸透していった。再放送では平均視聴率も10%を超え、1981年における関東地区で17.9%、1982年における名古屋地区で25.7%(最高視聴率29.1%)を記録した。

放映終了半年後にバンダイから発売されたMSのプラモデルが爆発的な売れ行きを見せ、ガンプラと呼ばれた(後述)。後の劇場版公開もあわせ、社会現象ともいえるブームを巻き起こした。その後も本作と世界観や設定、歴史などを踏襲、あるいは共有する小説や漫画が数多く制作された、メディアミックスの先駆けともいえる作品である。

一方で、作中におけるMSの描写やニュータイプの存在に対して高千穂遙がSF作家としてSF考証の観点から批評する意見を述べ「ガンダムSF論争」を巻き起こした。

本作のヒットは新たなアニメブームをもたらし、これに影響されたアニメも玉石混淆で無数に製作されることになる。特にロボットアニメは本作同様に、登場人物や世界観の描写に力を注ぐことで高年齢層も意識した作品作りがなされるようになり、数多くの作品を生み出した。

2010年に第4回声優アワードシナジー賞を受賞した。

サンライズは前述のように本作を中学生以上向けに作っていたが、スポンサーが集まらない懸念があったため、創通エージェンシーはスポンサーには低年齢向けと説明していた。こうして各社とも前2作『無敵超人ザンボット3』、『無敵鋼人ダイターン3』と同じく、小学生以下向けの商品を展開したことからミスマッチが起き、せっかくの中高生ファンを取り込むことが出来ず、関連商品は不振に陥った。そこでクローバーの要請により、1979年9月にGアーマーが登場し、同月にはGアーマーとガンダムをセットにした「ガンダムDX合体セット」が発売されたが、売上増には結び付かなかった。

企画当初、アニメ制作陣は、この作品を画期的な作品とすべく、数々の斬新な案を用意していた。その中には「主役のガンダムのカラーリングは白一色」という、これまでの子供向けアニメの常識を打ち破る設定もあった。しかしスポンサー筋から「TVアニメのスポンサーを引き受ける目的はTV画面に登場するキャラクターの商品化なのに、主役のロボットが白一色では売れるわけがない。子供のオモチャは赤青黄色の三原色を使うのが常識。ガンダムも赤青黄色で塗れ。」との意見があった。スポンサーの意思(というより事実上の命令)を無視出来なかったため、仕方なく胴体部分のみ申し訳程度に赤青黄色の三原色を彩色した。尚、企画段階でガンダムが白い事に反対していたクローバーは、ガンダムにある白い箇所の大部分を銀色に独自解釈し、自社の玩具では色を変えて販売していた。

名古屋テレビの関岡の証言では、局の立場としては番組を打ち切り対象にする程ではなかったが、玩具業界のサイクルでは年末年始の次は3月の春休みに需要が見込めるため、2月に新番組を投入すれば、ちょうどその時期に玩具が売れて経営危機を乗り切れるのではないかと判断され、乗り換え需要を喚起するために1月一杯で打ち切りが決定したという見方が有力である。サンライズの飯塚正夫は「オモチャが売れるクリスマスとお正月のお年玉のある1月までは何とか放送してもらえる事になった」と述べている。ところが年末商戦で「DX合体セット」が好調な売れ行きを示し、クローバーは慌てて延長をサンライズに打診したものの実現しなかった。

前述のように本放送時に関連商品を展開した会社は軒並み失敗したが、アニメ雑誌『アニメック』を発行し、アニメショップ『アニメック』を経営していたラポートだけはアニメファンの盛り上がりをいち早く掴んでいた。同社はアニメファン向けの商品を本放映時、既に展開してファンを盛り上げていった。

一方で玩具の売上不振を補うべく、サンライズはクローバーにプラモデルの商品化を打診していたが、「売れないキャラクターの商品を増やしてもしょうがない」と拒否された。そこでサンライズはクローバーの了解を得て他社にプラモの商品化を呼びかけた。ところが本作のもう一つの版権元であり、版権窓口でもある創通エージェンシーはクローバーの玩具販売に悪影響が出る事を懸念し、アオシマにプラモ化を打診した。しかし、打ち切りが決まっていたため、次回作で模型化を行なうこととなり、ガンダムのプラモ化は断られた。そのような中でも創通は、『宇宙戦艦ヤマト』の模型を販売していたバンダイ模型に打診、長い交渉の末、1979年の暮れに創通が折れる形でバンダイ模型が商品化権を取得した。こうして放映終了半年後に発売されたプラモデルが爆発的な売れ行きを見せ、ガンダム人気を広げる一助となった。大変な人気を得た事でガンダムのプラモはガンプラと呼ばれるようになり、更には「モビルスーツバリエーション」と呼ばれる派生シリーズを産み、それらにおける種々の設定はアニメ雑誌において生み出された設定と合わせてガンダムの世界観をより深く掘り下げるものとなった。1982年にはプラモデル市場は過去最高の市場規模になった。

こうした経緯のため、「ガンダムブームはラポートが火をつけ、バンダイが築いた」と評されている。劇場版公開の頃になると各社とも本作のファン層に合わせた商品展開をしていたが、ファンの低年齢化によってアニメファン向け以外の商品も売れるようになっていった。また、ガンプラや各種トイも今尚、初代ガンダムやザクの新型アイテムが発売される等、根強い人気を保っている。近年ではザクとうふ等、ファンシーな商品も発売され、ファン層を拡大させている。

舞台は、スペースコロニーへの宇宙移民が始まって半世紀余りが過ぎた未来世界・宇宙世紀0079年。サイド3はジオン公国を名乗り連邦政府に対し独立戦争を挑む。圧倒的な国力差にかかわらず、ジオンはモビルスーツの導入やコロニー落とし等の革新的戦術により、優位に立ち、双方の人口の約半分を死に至らしめた。

開戦から半年が経過し、戦争は膠着状態に陥っていた。赤い彗星の異名を持つジオンのシャア・アズナブル少佐は、地球連邦軍の新造艦ホワイトベースを追尾して建造中の中立コロニー・サイド7に辿り着く。サイド7では連邦軍による戦局打開の切り札たるモビルスーツ製造計画V作戦が極秘に進行していた。シャアはモビルスーツ・ザクをサイド7の偵察に送り込む。コロニー内部に侵入した2機のザクは連邦軍のモビルスーツ製造施設を発見。手柄を焦った新兵の暴走により、偶発的な戦闘状態に陥る。

連邦軍の技官でモビルスーツ開発者であるテム・レイの息子アムロ・レイは、戦闘の混乱の中、連邦軍の新型モビルスーツ・ガンダムに乗り込む。偶然手にしたマニュアルを片手に、どうにか2機のザクを倒したアムロだったが、ザクに搭載された核融合エンジンの爆発により、コロニーは損壊。生き残ったサイド7市民は避難民と化す。戦闘で正規クルーの大半を失い、艦長であるパオロも重傷を負ったホワイトベースは、やむなく新米士官のブライト・ノアを艦長代理とし、新型モビルスーツの回収と並行して避難民を収容。彼等の中から操船と迎撃に必要な人員を確保したホワイトベースはサイド7を脱出。アムロはなし崩しにガンダムのパイロットに任命される。そして、シャアの執拗な追撃により、満身創痍のホワイトベースは当初の目的地である地球連邦軍総司令部ジャブローから、遠く離れたジオン占領地域の北米大陸に降りてしまう。

本作は、激戦地帯を転戦しながら、宿敵シャアを始め、様々な人々との出会いと別れ、そして戦いを経て、数々の困難を乗り越え、閉鎖的な極限状態に悩み傷付きながらも一歩ずつ成長していく、アムロを始めとした少年少女の成長を描いた物語であり、また、ジオン・ズム・ダイクンの遺児ながらザビ家への復讐の為、シャアを詐称するキャスバルと医学生として滞在中のサイド7で戦闘に巻き込まれ、ホワイトベースの通信士(後にパイロット)となったセイラ・マスことアルテイシアの兄妹の相克。そして、相次ぐ死闘により、ニュータイプとして覚醒するアムロ、アムロと運命的な出会いを果たし、理解し合いながらもシャアを庇い戦死するララァ・スン、最愛の恋人ララァの死により、遅まきの覚醒を遂げ、最強のライバルであるアムロとガンダムに挑む立場となったシャアの三角関係が描かれている。

キャラクター造形を担当した安彦良和によれば、地球連邦軍の軍服はナポレオン時代のフランス軍、ジオン軍の軍服はプロイセン軍を参考にして描かれたという。

アムロ・レイ
主人公。機械いじりの好きな内気な少年。父は地球連邦軍でV作戦のMS開発等を担当するテム・レイ大尉。母はカマリア・レイ。彼は急遽リーダーとなった士官候補生ブライト・ノアとの衝突や、仲間達を守る為、必然的に軍兵として戦争に巻き込まれていく事への葛藤を抱えながらも、サイド7脱出以来の宿敵シャア・アズナブルやMSパイロットとしても人間として、経験豊富なベテラン軍人ランバ・ラルとの戦い、初恋の女性マチルダ・アジャンや兄貴分リュウ・ホセイの戦死といった現実を経て人間的に成長していく。更にララァ・スンとの運命的な出会いにより、人類の革新「ニュータイプ」として覚醒する。アムロの搭乗するガンダムはジオン兵から「白いヤツ」として恐れられ、戦いの趨勢に関わる程の活躍を果たすようになる。最終決戦となったア・バオア・クーではガンダムが擱座し、自壊する要塞内に取り残されながらも、ニュータイプとしての力を家族同然の仲間達の為に使い、自身も奇跡の生還を果たす。
シャア・アズナブル
アムロの宿命のライバル。ルウム戦役で多大な戦果を挙げ、弱冠20歳にして佐官となったジオン軍のエースパイロットにして天才的軍人。通称赤い彗星。その正体はジオン共和国初代首相、ジオン・ズム・ダイクンの遺児、キャスバル・レム・ダイクン 。ガルマ・ザビ戦死時の不可解な行動により失脚するも、キシリア・ザビの抜擢により、再起を果たす。オデッサの敗戦後、起死回生のジャブロー攻略作戦では潜入工作隊長という重責を担い、戦いの舞台が再び宇宙となるやキシリア麾下の指揮官となる。
従来からのいわゆる「美形悪役」の流れにあるキャラクターではあるが、ジオンの独裁者ザビ家に対する復讐の為に戦争を巧妙に利用する人物として設定されている。ホワイトベースに乗船する妹アルテイシアの存在に悩む一方で、彼にとって終生を通じ、最愛の女性となるララァ・スンの前では素顔を晒し、アムロにララァを殺された事で、遅まきながらニュータイプとして覚醒。両軍の最終決戦地ア・バオア・クーで彼を凌駕する強敵となったアムロに「私闘」を挑む。だが、MS戦に続き、白兵での決闘でもアムロに敗れ、アルテイシアに諭された事で己を取り戻す。将兵を見捨てて逃亡を図ろうとしたキシリアを暗殺し、その後、行方不明となる。
セイラ・マス
医学生。言葉遣いが丁寧で気品の漂う美人。潔癖で気位が高い反面、男を操縦する術に長ける。当初は通信士としてアムロ達パイロットを支え、やがて適性を見い出されパイロットに転向する。その正体はダイクンの遺児アルテイシア。生き別れの兄キャスバルがシャアではないかという疑念から独断行動する等、思い悩む。戦場で再会したシャアがキャスバルと判明してからは父の鬼子と化した兄を憎悪するようになり、終盤でブライトに全てを打ち明ける。紆余曲折を経て本作中における最終的なアムロの想い人となる。ア・バオア・クーの決戦では搭乗機が擱座した為、要塞内に潜入し、奇しくもアムロとシャアの決闘に立ち会い「いい女になれ。アムロ君が呼んでいる」というシャアの言葉を最後に、兄と別れる事となる。その後アムロともはぐれ、要塞内で迷子になり生還を絶望するが、アムロのニュータイプ能力により、道案内されホワイトベースの仲間達と合流、生還した。
TV版ではGファイター1号機、劇場版ではコアブースター1号機と搭乗機が異なる。
ララァ・スン
フラナガン機関に見い出されたニュータイプの少女。本作中では「大佐に救われた」とあるだけで細かい事情への言及は避けられており、彼女がシャアと出会った経緯や前半生については不明。中立地帯であるサイド6の湖畔にて、父テムとの悲劇的再会に深く傷付いたアムロと運命的な出会いを果たす。二度目の邂逅で彼女がシャアの部下である事をアムロも知る所となり、ホワイトベース隊とコンスコン艦隊の戦闘結果を予言する等、高い資質を発揮する。シャアとは上司部下の関係を超えて恋人関係に発展。ソロモン要塞陥落後に実戦投入され、連邦艦隊を長距離からビットで狙い撃つ戦法でソロモンの亡霊と恐れられたが、護衛機の一般兵から弾除け扱いにされる等、ニュータイプの置かれた不遇を物語る。アムロとの戦いを通じ、ニュータイプの本質である「人と人とは分かり合える」事を体現するが、シャアの嫉妬を買い、奇しくもアムロ、セイラ対シャア、ララァという局面の戦闘ではセイラ機を狙ったシャアを止め、シャアとの決着をつける事でララァを解放しようとしたアムロの一撃からシャアを庇い戦死する。死後も想念という形でアムロを導いた。
ブライト・ノア
地球生まれで地球育ちというエリート士官。配属先のホワイトベースで人材不足の中、急遽、艦長代理を任され、反抗的なアムロ、カイら民間人の少年兵達や、立場を弁えない避難民達、艦の置かれた極限状況等に悩み苛立ちながらも軍人として成長を遂げていく。己の右腕となって支えてくれたリュウ・ホセイの戦死に、緊張の糸が切れ病床に倒れるも、優秀な指揮官として独り立ちする転機となる。彼を操舵士、且つ相談役として献身的に支え続けたミライ・ヤシマに好意を抱きながらも、「不器用な男」として彼女の恋の行方を見守り、戦後結ばれた。実の父に溺愛されて育ったアムロに対し、現実の厳しさを教える父親代わりとして厳しく接するが、一方でニュータイプという理解の範疇を超えるアムロの能力に訳もなく苛立っていた事を自覚し、アムロが成長を遂げてからは一人前に扱うようになる。ジャブロー到着後は囮部隊として、再び宇宙へ上がり、決戦を迎える。強襲揚陸艦という本分を果たしたホワイトベースは連邦軍の勝利に寄与するも、ア・バオア・クーで大破、アムロのニュータイプ能力により、総員退艦命令を出すよう進言され決行。クルーの大半を生還させた。
本作の続編に当たる機動戦士Ζガンダム、機動戦士ガンダムΖΖ、機動戦士ガンダム 逆襲のシャア、機動戦士ガンダムUC、機動戦士ガンダム 閃光のハサウェイにおいても重要人物として登場し続ける事となる。
その他の人物
カイ・シデン、ハヤト・コバヤシ、フラウ・ボゥ、ミライ・ヤシマといったホワイトベースの仲間達もそれぞれに成長を遂げていく姿が描かれる。また、戦争を嫌悪する元軍人、戦争に加担する民間人、スパイ、武器開発者、主人公に殺される学徒動員パイロット等、それまでのアニメーションでは軽視されていたキャラクターの描写も多い。この方向性は『ザンボット3』でも試みられたが、後の作品にまで影響を及ぼすほど徹底した点は、本作の非常に大きな特徴である。

質問を以下にしてみます。

query = "アムロはどういう人ですか?"

実行するとWindows環境では以下のエラーが出る人がいます。

'cp932' codec can't decode byte 0x86 in position 41

これはWindowsではデフォルトS-JISで動作しているにもかかわらずUTF-8文字列を読み込もうとしているためです。loaderをいかに変更してください。

loader = TextLoader("state_of_the_union.txt",encoding="utf-8")
Created a chunk of size 1490, which is longer than the specified 1000        
--------------------------------------------------------------------------------
Score:  0.15593652825883053
アムロ・レイ
主人公。機械いじりの好きな内気な少年。父は地球連邦軍でV作戦のMS開発等を担当するテム・レイ大尉。母はカマリア・レイ。彼は急遽リーダーとなった士官候補生ブラ イト・ノアとの衝突や、仲間達を守る為、必然的に軍兵として戦争に巻き込まれてい く事への葛藤を抱えながらも、サイド7脱出以来の宿敵シャア・アズナブルやMSパイロットとしても人間として、経験豊富なベテラン軍人ランバ・ラルとの戦い、初恋の女 性マチルダ・アジャンや兄貴分リュウ・ホセイの戦死といった現実を経て人間的に成 長していく。更にララァ・スンとの運命的な出会いにより、人類の革新「ニュータイ プ」として覚醒する。アムロの搭乗するガンダムはジオン兵から「白いヤツ」として 恐れられ、戦いの趨勢に関わる程の活躍を果たすようになる。最終決戦となったア・ バオア・クーではガンダムが擱座し、自壊する要塞内に取り残されながらも、ニュー タイプとしての力を家族同然の仲間達の為に使い、自身も奇跡の生還を果たす。     
シャア・アズナブル
アムロの宿命のライバル。ルウム戦役で多大な戦果を挙げ、弱冠20歳にして佐官とな ったジオン軍のエースパイロットにして天才的軍人。通称赤い彗星。その正体はジオ ン共和国初代首相、ジオン・ズム・ダイクンの遺児、キャスバル・レム・ダイクン 。ガルマ・ザビ戦死時の不可解な行動により失脚するも、キシリア・ザビの抜擢により 、再起を果たす。オデッサの敗戦後、起死回生のジャブロー攻略作戦では潜入工作隊 長という重責を担い、戦いの舞台が再び宇宙となるやキシリア麾下の指揮官となる。 
従来からのいわゆる「美形悪役」の流れにあるキャラクターではあるが、ジオンの独 裁者ザビ家に対する復讐の為に戦争を巧妙に利用する人物として設定されている。ホ ワイトベースに乗船する妹アルテイシアの存在に悩む一方で、彼にとって終生を通じ 、最愛の女性となるララァ・スンの前では素顔を晒し、アムロにララァを殺された事 で、遅まきながらニュータイプとして覚醒。両軍の最終決戦地ア・バオア・クーで彼 を凌駕する強敵となったアムロに「私闘」を挑む。だが、MS戦に続き、白兵での決闘 でもアムロに敗れ、アルテイシアに諭された事で己を取り戻す。将兵を見捨てて逃亡 を図ろうとしたキシリアを暗殺し、その後、行方不明となる。
セイラ・マス
医学生。言葉遣いが丁寧で気品の漂う美人。潔癖で気位が高い反面、男を操縦する術 に長ける。当初は通信士としてアムロ達パイロットを支え、やがて適性を見い出され パイロットに転向する。その正体はダイクンの遺児アルテイシア。生き別れの兄キャ スバルがシャアではないかという疑念から独断行動する等、思い悩む。戦場で再会し たシャアがキャスバルと判明してからは父の鬼子と化した兄を憎悪するようになり、 終盤でブライトに全てを打ち明ける。紆余曲折を経て本作中における最終的なアムロ の想い人となる。ア・バオア・クーの決戦では搭乗機が擱座した為、要塞内に潜入し 、奇しくもアムロとシャアの決闘に立ち会い「いい女になれ。アムロ君が呼んでいる 」というシャアの言葉を最後に、兄と別れる事となる。その後アムロともはぐれ、要 塞内で迷子になり生還を絶望するが、アムロのニュータイプ能力により、道案内され ホワイトベースの仲間達と合流、生還した。
TV版ではGファイター1号機、劇場版ではコアブースター1号機と搭乗機が異なる。    
ララァ・スン
フラナガン機関に見い出されたニュータイプの少女。本作中では「大佐に救われた」 とあるだけで細かい事情への言及は避けられており、彼女がシャアと出会った経緯や 前半生については不明。中立地帯であるサイド6の湖畔にて、父テムとの悲劇的再会に深く傷付いたアムロと運命的な出会いを果たす。二度目の邂逅で彼女がシャアの部下 である事をアムロも知る所となり、ホワイトベース隊とコンスコン艦隊の戦闘結果を 予言する等、高い資質を発揮する。シャアとは上司部下の関係を超えて恋人関係に発 展。ソロモン要塞陥落後に実戦投入され、連邦艦隊を長距離からビットで狙い撃つ戦 法でソロモンの亡霊と恐れられたが、護衛機の一般兵から弾除け扱いにされる等、ニ ュータイプの置かれた不遇を物語る。アムロとの戦いを通じ、ニュータイプの本質で ある「人と人とは分かり合える」事を体現するが、シャアの嫉妬を買い、奇しくもア ムロ、セイラ対シャア、ララァという局面の戦闘ではセイラ機を狙ったシャアを止め 、シャアとの決着をつける事でララァを解放しようとしたアムロの一撃からシャアを 庇い戦死する。死後も想念という形でアムロを導いた。
ブライト・ノア
地球生まれで地球育ちというエリート士官。配属先のホワイトベースで人材不足の中 、急遽、艦長代理を任され、反抗的なアムロ、カイら民間人の少年兵達や、立場を弁 えない避難民達、艦の置かれた極限状況等に悩み苛立ちながらも軍人として成長を遂 げていく。己の右腕となって支えてくれたリュウ・ホセイの戦死に、緊張の糸が切れ 病床に倒れるも、優秀な指揮官として独り立ちする転機となる。彼を操舵士、且つ相 談役として献身的に支え続けたミライ・ヤシマに好意を抱きながらも、「不器用な男 」として彼女の恋の行方を見守り、戦後結ばれた。実の父に溺愛されて育ったアムロ に対し、現実の厳しさを教える父親代わりとして厳しく接するが、一方でニュータイ プという理解の範疇を超えるアムロの能力に訳もなく苛立っていた事を自覚し、アム ロが成長を遂げてからは一人前に扱うようになる。ジャブロー到着後は囮部隊として 、再び宇宙へ上がり、決戦を迎える。強襲揚陸艦という本分を果たしたホワイトベー スは連邦軍の勝利に寄与するも、ア・バオア・クーで大破、アムロのニュータイプ能 力により、総員退艦命令を出すよう進言され決行。クルーの大半を生還させた。     
本作の続編に当たる機動戦士Ζガンダム、機動戦士ガンダムΖΖ、機動戦士ガンダム 逆 襲のシャア、機動戦士ガンダムUC、機動戦士ガンダム 閃光のハサウェイにおいても重要人物として登場し続ける事となる。
その他の人物
カイ・シデン、ハヤト・コバヤシ、フラウ・ボゥ、ミライ・ヤシマといったホワイト ベースの仲間達もそれぞれに成長を遂げていく姿が描かれる。また、戦争を嫌悪する 元軍人、戦争に加担する民間人、スパイ、武器開発者、主人公に殺される学徒動員パ イロット等、それまでのアニメーションでは軽視されていたキャラクターの描写も多 い。この方向性は『ザンボット3』でも試みられたが、後の作品にまで影響を及ぼすほど徹底した点は、本作の非常に大きな特徴である。

動いてはいるものの結果に余計なものが多すぎます。これはおそらくチャンクが大きすぎて分割されている一つの文章が長すぎるためです。次回の記事ではもう少しいろいろなパラメータなどを触った結果を上げたいと思います。

このアプリに意味があるのか?

ChatGPT等LLMを活用したサービスが生まれる中、自前の検索を作ることに意味があるのでしょうか。普通にウェブで検索可能な情報であれば意味は薄いと言えます。著名どころLLMモデルはそれらを学習し続け日々進化していますので、一時的に独自検索アプリが優位性を持っていたとしても、過ぎに追い抜かれるリスクがあります。一方世の中には企業の内部にしか存在しない情報がいっぱいあります。例えば有給休暇の申請方法などはすべての企業が異なる方式を持ちます。こういう情報はChatボットが答えるようになることで相当の業務負荷軽減が期待できます。

Discussion