Chat with RTXでおれおれRAG環境を作った

Azure

NVIDIAがChat with RTXをリリースしてくれたので、GitHubからcloneしてシコシコビルドせずとも、アプリをダウンロードするだけでRAG(Retrieval Augmented Generation)を利用できるようになった。最も簡単なのは、Chat with RTXにYoutubeのURLを食わせる方法なのだけど、圧倒的にRAGのベースとなるデータ量としては少ない。

さて、何を食わせるかなぁと考えて、まだChat with RTXが英語にしか対応していないことも鑑みて、MicrosoftのLearnを学習させてみることにした。

まず、en-usのazureだけクロールしてダウンロードする。これは一晩放置しておけば良い。

% wget -np \
--reject '*.js,*.css,*.ico,*.txt,*.gif,*.jpg,*.jpeg,*.png,*.mp3,*.pdf,*.tgz,*.flv,*.avi,*.mpeg,*.iso,*.svg,*.xml,*.docx'\
-r https://learn.microsoft.com/en-us/azure/

次に、ダウンロードしたディレクトリにglob()して、ファイルから以下のような感じでコンテンツ部分だけ抜き出す。

def get_content(src):
    in_content = False
    buf = ""
    for ln in src.split("\n"):
        if "<!-- <content> -->" in ln:
            in_content = True
            buf = ln.strip() + "\n"
        elif "<!-- </content> -->" in ln:
            buf = buf + ln.strip() + "\n"
            return buf
        else:
            if in_content == True:
                buf = buf + ln.strip() + "\n"

あとは、BeautifulSoupでテキストだけ抜き出して、テキストファイルとして保存する。

from bs4 import BeautifulSoup
soup = BeautifulSoup(content, "html.parser")
print(soup.text)

テキストファイルは約33,000個、容量は480MBのデータが得られた。

これをChat with RTXに食わせると、延々とEmbeddingを生成するので、数時間放置する。

生成中
暖房中

終わったら、質問してみる。

ちゃんと、回答のソースも表示される。

鼻血が出そうなぐらい便利なんですけど、これw