Planet Python 日本語
フォロー
ボブ・ベルダーボス:1コア、2インターフェース、書き換えなし
Ask the Canonの著者は、まずコア機能を構築し、その後インターフェースを追加するという、ファンクショナルコアとシンアダプターのアプローチでアプリケーションを構築しました。コアは、embed、load_library、search_passages、reflowといった、コマンドラインインターフェースとウェブアプリケーションの両方で使用される少数のピュア関数で構成されています。load_library関数は呼び出しにコストがかかるため、著者はパフォーマンス向上のためにキャッシングを使用し、cacheデコレーターによって最初の呼び出しを辞書検索に変換しました。最初の訪問者がライブラリ読み込みのオーバーヘッドを負担しないように、著者はFastAPIのlifespanを使用して、最初の要求の前にライブラリをウォームアップし、モデルをRAMにロードしました。著者はまた、sentence-transformersモデルが実際に必要になるまでロードを遅延させるために、遅延ロードを使用しました。アプリケーションのデザインは、クラスを必要とせず、プレーンデータよりも関数を使用しており、コア関数は新しいインターフェースで簡単に再利用できます。著者は、特にプロトタイプから本番環境への移行において、アプリケーション構築におけるエンジニアリング判断の重要性を強調しています。アプリケーションのアーキテクチャは、コア機能とインターフェースの明確な分離により、柔軟性とスケーラビリティを備えるように設計されています。著者は、将来の投稿でアプリケーションの結果を改善するための後処理トリックについて議論する予定です。キャッシング、遅延ロード、ウォームアップの使用はすべて、アプリケーションのパフォーマンスと効率に貢献しています。