![見出し画像](https://assets.st-note.com/production/uploads/images/114782974/rectangle_large_type_2_4056ab88096d17ef407ec8ed47debb57.png?width=1200)
LangChainのv0.0266からv0.0.276までの差分を整理(もくもく会向け)
前回のまとめを書きおこす前にもくもく会がやって来てしまいました・・・。多忙を極めているからこその勉強時間としてのもくもく会、という訳で、今宵もキャッチアップを進めていきたいと思います。
お付き合い頂ける方、今宵もどうぞよろしくお願いいたします。
気になった話
スプレッドシートからのデータ要約とクエリ処理におけるeparseと大規模言語モデルの使用
![](https://assets.st-note.com/img/1693382600580-VjLMcgv0tS.png?width=1200)
【問題背景】
LLMはテキストベースのドキュメントを扱うのには適しているが、Excelスプレッドシートのような表形式のデータを扱うのには向いていない。表形式データをLLMで上手く扱うにはどうすれば良いか?
【典型的なETLワークフロー】
1)ドキュメントの種類を識別し、コンテンツを抽出
2)テキスト要素をドキュメントに分割
3)分割したドキュメントをベクトルDBに保存
4)ベクトルDBから回答や要約に必要な情報をクエリ
【この方法の問題点】
1)機械的にExcelシートの内容を分割しようとすると論理的に破綻したチャンクに分割されてしまう
2)大きすぎるチャンクはコンテキストサイズ制限にかかる
3)論理破綻したチャンクを元にした要約は不正確になる
4)LLMによる離散値のルックアップ性能は低い
【解決案】
eparseライブラリによってExcelシートからサブテーブルを抽出し、論理的に整合したセグメンテーションを可能にする。
サブテーブルに分けたデータをMap-reduceで要約したら良い感じになった、という話が面白い。ちゃんと意味のある単位でチャンク分けされていることが重要なんだなと感じる。
LangSmithを活用してファインチューニングしてみる話
It's a great question. I roughly think of finetuning as analogous to expertise in people:
— Andrej Karpathy (@karpathy) May 9, 2023
- Describe a task in words ~= zero-shot prompting
- Give examples of solving task ~= few-shot prompting
- Allow person to practice task ~= finetuning
With this analogy in mind, it's… pic.twitter.com/1JEV02ZFtU
LangSmithにはLLMへのプロンプトと生成結果が自動的に記録されるため、その結果を品質で選別し、質の高いデータセットでファインチューニングしてみようという記事。
具体的にはこちらのColabのコードが参考になる。
LangSmith + LLaMA Fine-tuning Guide
v0.0.266 (2023.08.16)
新しい機能の追加
・Elasticsearch self-query retrieverを追加
・OAI sched testsを追加
・hub push/pull機能を追加
・BittensorLLMを追加
・Dashvector vectorstoreを追加
・Schema Evalsを追加
・ZepVectorStoreを追加
既存機能の変更
・Pydanticの互換性のためのパッケージを削除
・Pydanticのバージョンの両方でテストするようにテストワークフローを更新
・新しいURLと機能が含まれるContext統合のドキュメンテーションを更新
・Readable jsonを用いたGuide importを更新
・Create_openai_fn_chainへのoutput keyの露出
バグ修正
・Context nbのバグを修正
・Pydanticを固定するバグを修正
・Faissのリファクタリングを修正
・Vectara regressionのバグを修正
・Ernie chatモデルの改善に関するバグを修正
v0.0.267 (2023.08.18)
新しい機能の追加
・Tiktokenの統合を追加
・オープンソースのLLMガイドを追加
・Pydantic v1の名前空間をLangchainに作成
既存機能の変更
・互換性のあるPydanticを追加
・一部のPydanticモデルで足りないタイプを追加
・Pydantic v1の互換性をサブモジュールで使用するよう変更
バグ修正
・コードスニペットの中の変数ケースを修正
・最後の状態のgetterを修正
・llm_router.pyおよびhuggingface_textgen_inference.ipynbのタイポを修正
・API参照のドキュメントを修正
・バージョン2のインポートを修正
・eval_chain.pyのタイポを修正
・"community.md"およびtutorials.mdxのタイポを修正
・router.ipynb内のMultiPromptChainの例を修正
・tutorials.mdxファイル内のLangchainをLangChainに更新
・tutorials.mdxおよび.ipynbファイルの文法誤りを修正
・Fallbacks.ipynbのタイポを修正
v0.0.268 (2023.08.19)
新しい機能の追加
・Runnable mapsのストリーミングを追加
・tee peer cleanupにロックを追加
既存機能の変更
・タイプ注釈の欠落を補完
・pal chain参照を修正
・.mypy_cacheをリント実行間でキャッシュ利用を設定
・openapi_schema_pydanticをオプト化
・pydanticの互換性ガイドを更新
・ValueErrorを起こすインスタンスをImportErrorを起こすものに変更
・OSSモデルガイドの図を更新
・pydantic v2を手動インストール時に`poetry install`のキャッシュをバストしないように設定
・他のすべてのオプショナルなRunnableメソッドにkwargsを追加
・retrieversとdependentsのdocstringsを整合性を修正
・blackのフォーマット情報をCI実行間でキャッシュ利用を設定
・最小と最大の対応PythonバージョンのみでLintを適用する設定を追加
・インストールソースをより明瞭に設定
バグ修正
・相反する値を二つの変数に代入することにより引き起こされるデッドループバグを修正
・router.ipynbの文章を修正
・fallbacks.ipynbのスペルミスを修正
v0.0.269 (2023.08.22)
新しい機能の追加
・`WORKDIR` env varに依存する機能を追加
・リポジトリリンクの更新機能をパッケージメタデータに追加
・`InternLM`サンプルを追加
・指定のrun idをトレース内のchain groupとして指定する機能を追加
・qdrant vsを使用した非同期のドキュメント埋め込み機能の強化を追加
・Geometry Validation、Geometry Metadata、Python str()の代わりにWKTを使用するGeoDataFrame Loaderを追加
・JSONパーサーにstrictフラグを追加
・Langchain Agent Execution Guideを追加
・`Qwen`モデルサンプルを追加
・textgenにストリーミングサポートを追加
・SharePoint Loaderを追加
・ERNIE Embedding-V1のサポートを追加
既存機能の変更
・全体のサフィックスを統一し、例外を明確にする機能を変更
・CIのpoetryのバージョンを1.5.1にアップデート
・APIのURLを正しいものに変更
バグ修正
・notebookのimport修正
・同じコールバックを何度も実行するSequentialChainのバグ修正
・小さなタイプミスの修正
・二つのElasticsearchクラスから誤ったABCを削除
・unstructured preprocess関数の適用を修正
・スペルミスの修정と欠けていたブラケットの追加
・apis.ipynbのタイプミスを修正
・Linux under WSL2用のbash test regexの修正
・リリースワークフローの意図しない実行の修正
・クエリ内のメタデータの問題を修正
・ドキュメント内のクラス呼び出しエラーを修正
v0.0.270 (2023.08.22)
新しい機能の追加
・masterへのpush時にリリースする機能を追加
既存機能の変更
・一部の小さな修正を行いました
v0.0.271 (2023.08.23)
新しい機能の追加
・SECURITY.mdファイルをレポジトリに追加
・Marqoのバージョン1.0.0+のためにMarqoとの統合を更新
・リリースワークフローを手動でトリガーさせるように設定
・Langchainパッケージを公開するためにPyPI Trusted Publishingを使用
・`py.typed`ファイルを `langchain-experimental`に追加
・Epsilla vectorstoreを追加
・Clarifai統合の改善
・チャットOpenAI._astreamを更新し、finish_reasonを尊重するように
・データ接続をデータ取得に更新
・ConfluenceLoader.init()にセッションを追加
・Memgraphのノートブックを追加
・PromptGuard統合を追加
・親ドキュメントの取得ノートブックに不足していたパラメータを追加
・Polarsサポートを追加
・AzureML Deployment の例文書化
・フィールド名のための変数を追加
・AINetworkブロックチェーンツールキット統合を追加
既存機能の変更
・SECURITY.mdの電子メールアドレスを更新
・Pydantic APIリファレンスビルドを固定
・エラー報告の際に"bug"タイプの問題として報告しないようにリマインダーを追加
・GitHubが推奨するシェル補間のより安全なパターンを使用
・テストCIワークフローから特別なケーシングを排除
・リリースの公開に必要な`contents: write`許可を明示的に追加
バグ修正
・常に誤って動作する条件文を修正
・ConfluenceLoader:process_pageのインポートを修正
・typoの修正
・例外タイプをValueErrorからImportErrorに変更
・ChatMessageHistoryの修正
・ArangoDB Empty Schema Caseを修正
・Litellmモデル名のバグを修正
v0.0.272 (2023.08.24)
新しい機能の追加
・バッチユーティリティを追加
・lanchain.llms.VLLM内でdtypeを指定できるようになる機能を追加
・CrateDBプロンプトを追加
・「Docugamiローダ」のソースキー名を修正
・NLPクラウドAPIのいくつかの変更後にnlpcloudコネクタを更新
・新しいマップ()メソッドを追加
・ChatOllamaを追加
・GenericLoader.from_file_systemへの除外の追加
・インデックスのサポート追加
・新しいドキュメントローダAssemblyAIAudioTranscriptLoaderの追加
既存機能の変更
・キャッシュタイムアウトを短縮してビルドを早くします
・`langchain`上の`master`ブランチで実験パッケージをテスト
・トップレベル環境に`poetry lock`を適用
・langchainに`poetry lock`を適用
・実験パッケージに`poetry lock`を適用
・CI内での並行グループとワークフローのキャンセルを設定
・tqdmの代わりにtqdm.autoをOpenAIEmbeddingsにインポート
・インストーラから-E allを削除
・Python/Poetry設定を共通化し、lintおよびテストジョブのpoetryインストールをキャッシュ
・新しいPython設定手順を定期テストに適用
・BaseChatModel.astreamを元のジェネレーション情報に適用
・ConfluenceLoader上でcontent_format=VIEW および` keep_markdown_format`がTrueの場合のエラーを修正
・tigrisのタイプミスを修正
・PromptGuardドキュメントを修正
・構造化したデータソースをサポートするようにgoogle_cloud_enterprise_search.pyを更新
・config内のローカル環境に関する設定を変更および取り消し
・Runnable localsを追加
・ゲネリックローダからのファイルシステムの除外を追加
・実行コード内でインテグレーションテストのインポートを修正
・アトラスとGPT4Allのドキュメントを更新
・ChatOpenAIと互換性のあるkwargsの使用を可能にする
・MyScaleベクトルストアのデフォルトのインデックスタイプとメトリックタイプを更新
・ランナブル内の循環インポートを解決
・ChatOpenAI._streamを完了の理由に応じて更新
バグ修正
・deeplake.mdxファイルのリンクを修正
・ChatOpenAIドキュメントに微調整の例を追加
・csvエージェントのpython replを修正
・ElasticsearchStoreのドキュメント追加時のエラーロギングを改善
・Doc Filesの文法エラーを修正
・リンクURLの修正
・ruff警告に対する掃除:type()の代わりにisinstance()を使用
・Harrison/multi vectorバグを修正
・AssemblyAIAudioTranscriptLoaderドキュメントの修正(短いインポートパス)
v0.0.273 (2023.08.25)
新しい機能の追加
・Code LLaMAをコードQAユースケースに追加
・GraphCypherQAチェーン用の別のLLMを使うオプションを追加
・qdrant max_marginal_relevance_searchに検索パラメーターを追加
・チャットローダーを追加
・チャットメッセージメモリストアとしてのXataを追加
・Hubプッシュエルゴノミクスを追加
・pgvectorのdelベクトルと、コンフルエンスとGoogleドライブドキュメントに更新時間を追加
・DocAIベースのPDFパーサーを追加
・Twitterチャットローダードキュメントを追加
・Mosaicエンドポイントの入出力APIを更新
・Azure Cognitive SearchのSDKバージョン8を更新し、ユーザーエージェントを変更し、スコア付きで検索
既存機能の変更
・Google APIコアを削除
・APIクラスをソート
バグ修正
・統合依存性を修正
・Valueエラー "pyspark is not installed. Please install it with `pip i…"を削除
・QuestionListOutputParserを修正
v0.0.274 (2023.08.27)
新しい機能の追加
・multivector notebookの実装を追加
・RAG use caseの更新、ntbkへの移動を追加
・agent docsの更新とuse-case sub-directoryへの移動を追加
・token chunksの追加
・code understanding use caseでのLLaMA導入を追加
・comprehend moderatorの初期コミットを追加
・Redisのメタデータフィルタリングと仕様、インデックスのカスタマイズを追加
既存機能の変更
・ModerationとConstitutional chainへのブロークンリンク修正を追加
・デバッグページ内のwandbリンク修正を追加
・全ケースにマッチするための正規表現を修正し、ソース含むを追加
バグ修正
・typo: funtions --> functionsのタイプミスを修正
・docs: adding_memory.ipynb内のスペリングミス修正を追加
v0.0.275 (2023.08.29)
新しい機能の追加
・gmail loaderを追加
・openai termsを受け入れる機能を追加
・ロバストな言語チェーンの作成を可能にするインスタンスを公開
その他
・フィードバック機能を返す機能を追加
v0.0.276 (2023.08.30)
新しい機能の追加
・llama-cpp内の文法ベースのサンプリングを追加
・実験的な`SQLDatabaseChain`クラスにセキュリティ警告を追加
・GGUFのための説明書を追加
・iMessageローダを追加
・指定された場合、既存の必要なargs objを使用
・collect_runsコールバックを追加
・コンフィグファイルをlangchain実験に追加
・neo4jベクターのサポートを追加
既存機能の変更
・`Infino`の例を修正
・mypy型ヒントを追加して`type: ignore`抑制を避ける
・`ainetwork`の更新を追加
・`llm_caching` nbのタイトルの修正を追加
・web_scraping.ipynbの更新を追加
・ノートブックだけを更新
・Xataバージョンの事前リリースはもはや必須ではない
・キューブの処理を許可するキューブセマンティックローダー
バグ修正
・pydanticのインポートを修正