Hacktoberfest 中にさまざまなリポジトリに貢献した後は満足していましたが、Hacktoberfest が終わるとすぐに、より多くのオープンソース プロジェクトに貢献したいという新たな深い興奮を感じました。私はバックエンドとフロントエンドの両方を含む技術スタックを持つ多くのプロジェクトに貢献してきましたが、今回は AI ベースのプロジェクト、特に RAG (Retrieval Augmented Generation) に関連するプロジェクトに貢献したいと考えていました。その中に
RAG ベースの多くのリポジトリを探しているときに、完璧なオープンソースの RAG ツールである ORAssistant を見つけました。これもまた、大規模なプロジェクトに関する一般的な質問や問い合わせに応答するチャットボットです。
このツールのアーキテクチャは非常に複雑で、メインのクエリ アーキテクチャがどのように動作するかをまだ理解しようとしていますが、これがエキサイティングな部分であり、貢献しながら学習していきます。
最初の問題では、レイマン用語でフィードバック ループを自動化するという課題を取り上げました。これが意味するのは、RAG アプリは通常、ユーザーからのフィードバックに依存してさらに微調整するということです。応答のタスクは、ユーザーからこのフィードバックを取得してデータベースに保存し、モデル自体にフィードバックすることでした
アーキテクチャは次のようになります
現在、システムはフィードバックを Google スプレッドシートに保存していますが、これも最適化されたアプローチではありません
この問題自体を解決するには 4 ~ 5 件の PR が必要ですが、このブログの焦点を絞るため、最初に作成した PR に限定します。
最初のプル リクエストでは、この問題のディスカッションから明らかなように、私のタスクはまずデータベース設計をセットアップして実行することでした。そうするうちに、たくさんの問題に遭遇しました
この PR 用に私が提案したソリューションは、適切なデータベースを選択するという議論を中心に展開していました。メンテナーとの綿密な議論の後、拡張性と柔軟性を考慮して、プロジェクトには MongoDB を使用することが最善であると判断しました。 MongoDB のスキーマレスの性質によるフィールド。
初期デザインを作成した後、フロントエンドの初期デザインのセットアップに関連する PR を開きました
これをマージするプロセス中に直面した問題の 1 つは、CI パイプラインのテストに合格しないことでした。これはコード内のエラーとは関係ありませんでしたが、一部のリポジトリ シークレットが伝播されなかったためです。そのため、メンテナは私に PR をマージするためにリポジトリへの書き込みアクセスを許可する必要がありました
この PR は、最終的に問題全体を解決するさらなる PR のベースとして機能します。正直に言うと、これは私がここしばらく取り組んできた最高のプロジェクトの 1 つです。1 つの問題を解決するだけでも 6 ~ 7 回の PR が必要です。これは、プロジェクトがいかに複雑で発展しているかを示しています。
オープンソースへの取り組みがどのように形になっていくのかをとても楽しんでいます。
以上がORAssistant への貢献の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。