เกี่ยวกับโครงการ
อัปเดตล่าสุดในบล็อกของเรา
ตัวอย่าง
วิสัยทัศน์
คุณสมบัติ
เริ่มต้นใช้งาน
การใช้งานและแนวคิด
แผนการทำงาน
มีส่วนร่วม
ใบอนุญาต
ในขณะที่ทำงานร่วมกับเครื่องมือที่ใช้ Python อื่นๆ ความหงุดหงิดก็เกิดขึ้นเกี่ยวกับประสิทธิภาพ ความเสถียร และความสะดวกในการใช้งาน ดังนั้น Swiftide จึงถือกำเนิดขึ้น เป้าหมายของ Swiftide คือการนำเสนอไลบรารี่ Augmented Generation สำหรับการดึงข้อมูลที่ครบครัน ซึ่งรวดเร็ว ใช้งานง่าย เชื่อถือได้ และง่ายต่อการขยาย
ส่วนหนึ่งของโครงการ bosun.ai แพลตฟอร์มที่กำลังจะมาถึงสำหรับการปรับปรุงโค้ดอัตโนมัติ
เรา <3 ข้อเสนอแนะ: ยินดีรับแนวคิดโครงการ ข้อเสนอแนะ และข้อร้องเรียน รู้สึกอิสระที่จะเปิดปัญหาหรือติดต่อเราได้ที่ความไม่ลงรอยกัน
จุดเริ่มต้นที่ดีคือ readme, Swiftide.rs, โฟลเดอร์ตัวอย่าง, บล็อกของเราที่ bosun.ai และบทช่วยสอนเชิงลึกที่ Swiftide-tutorial
คำเตือน
Swiftide อยู่ระหว่างการพัฒนาอย่างหนักและอาจมีการเปลี่ยนแปลงครั้งใหญ่ในขณะที่เรามุ่งสู่ 1.0 เอกสารประกอบที่นี่อาจขาดคุณสมบัติทั้งหมด และแม้ว่าความพยายามของเราจะล้าสมัยไปเล็กน้อยก็ตาม คาดว่าจะมีข้อบกพร่อง เราขอแนะนำให้จับตาดูเอกสาร GitHub และ API ของเราอยู่เสมอ หากคุณพบปัญหาหรือมีข้อเสนอแนะใดๆ เรายินดีรับฟังจากคุณในประเด็นนั้นๆ
(กลับไปด้านบน)
ประเมินท่อ Swiftide ด้วย Ragas (2024-09-15)
เปิดตัว - Swiftide 0.12 (2024-09-13)
Intel รหัสท้องถิ่นพร้อม Ollama, FastEmbed และ OpenTelemetry (2024-09-04
เปิดตัว - Swiftide 0.9 (2024-09-02)
นำหม้อแปลงมาเอง (2024-08-13)
เปิดตัว - Swiftide 0.8 (2024-08-12)
เปิดตัว - Swiftide 0.7 (2024-07-28)
สร้างไปป์ไลน์การตอบคำถามด้วยโค้ด (2024-07-13)
เปิดตัว - Swiftide 0.6 (2024-07-12)
เปิดตัว - Swiftide 0.5 (2024-07-1)
(กลับไปด้านบน)
การจัดทำดัชนีโปรเจ็กต์โค้ดโลคัล แบ่งเป็นชิ้นเล็ก ๆ เพิ่มคุณค่าให้กับโหนดด้วยเมตาดาต้า และคงอยู่ใน Qdrant:
indexing :: Pipeline :: from_loader ( FileLoader :: new ( "." ) . with_extensions ( & [ "rs" ] ) )
. with_default_llm_client ( openai_client . clone ( ) )
. filter_cached ( Redis :: try_from_url (
redis_url ,
"swiftide-examples" ,
) ? )
. then_chunk ( ChunkCode :: try_for_language_and_chunk_size (
"rust" ,
10 .. 2048 ,
) ? )
. then ( MetadataQACode :: default ( ) )
. then ( move |node| my_own_thing ( node ) )
. then_in_batch ( Embed :: new ( openai_client . clone ( ) ) )
. then_store_with (
Qdrant :: builder ( )
. batch_size ( 50 )
. vector_size ( 1536 )
. build ( ) ? ,
)
. run ( )
. await ? ;
การสืบค้นตัวอย่างเกี่ยวกับวิธีการใช้ไปป์ไลน์การสืบค้น:
query :: Pipeline :: default ( )
. then_transform_query ( GenerateSubquestions :: from_client (
openai_client . clone ( ) ,
) )
. then_transform_query ( Embed :: from_client (
openai_client . clone ( ) ,
) )
. then_retrieve ( qdrant . clone ( ) )
. then_answer ( Simple :: from_client ( openai_client . clone ( ) ) )
. query ( "How can I use the query pipeline in Swiftide?" )
. await ? ;
คุณสามารถดูตัวอย่างเพิ่มเติมได้ใน /examples
(กลับไปด้านบน)
เป้าหมายของเราคือการสร้างแพลตฟอร์มที่รวดเร็วและขยายได้สำหรับการดึงข้อมูล Augmented Generation เพื่อพัฒนาแอปพลิเคชัน AI อัตโนมัติต่อไปด้วย API ที่ใช้งานง่ายและง่ายต่อการขยาย
(กลับไปด้านบน)
tracing
ที่รองรับสำหรับการบันทึกและการติดตาม ดู /examples และลัง tracing
สำหรับข้อมูลเพิ่มเติมคุณสมบัติ | รายละเอียด |
---|---|
รองรับผู้ให้บริการโมเดลภาษาขนาดใหญ่ | OpenAI (และ Azure) - ทุกรุ่นและการฝัง AWS Bedrock - มานุษยวิทยาและไททัน Groq-ทุกรุ่น โอลามะ-ทุกรุ่น |
กำลังโหลดข้อมูล | ไฟล์ การขูด ฟลูวิโอ ปาร์เก้ ท่อและลำธารอื่น ๆ |
หม้อแปลงไฟฟ้าและการสร้างข้อมูลเมตา | สร้างคำถามและคำตอบทั้งข้อความและรหัส (Hyde) สรุป ชื่อเรื่อง และคำถามผ่าน LLM แยกคำจำกัดความและการอ้างอิงกับผู้ดูแลต้นไม้ |
การแยกและการแยกเป็นก้อน | มาร์กดาวน์ ข้อความ (text_splitter) รหัส (พร้อมพี่เลี้ยงต้นไม้) |
พื้นที่จัดเก็บ | คิวดรานท์ เรดิส แลนซ์ดีบี |
ไปป์ไลน์แบบสอบถาม | ความคล้ายคลึงกันและการค้นหาแบบผสมผสาน การแปลงแบบสอบถามและการตอบกลับ และการประเมินผล |
(กลับไปด้านบน)
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งห่วงโซ่เครื่องมือที่เป็นสนิมแล้ว การขึ้นสนิมเป็นแนวทางที่แนะนำ
หากต้องการใช้ OpenAI จำเป็นต้องมีคีย์ API โปรดทราบว่าโดยค่าเริ่มต้น async_openai
จะใช้ตัวแปรสภาพแวดล้อม OPENAI_API_KEY
การรวมระบบอื่นๆ อาจมีข้อกำหนดของตนเอง
ตั้งค่าโครงการ Rust ใหม่
เพิ่มสวิฟไทด์
cargo add swiftide
เปิดใช้งานคุณสมบัติการรวมที่คุณต้องการใช้ใน Cargo.toml
ของคุณ
เขียนไปป์ไลน์ (ดูตัวอย่างและเอกสารประกอบของเรา)
(กลับไปด้านบน)
ก่อนที่จะสร้างสตรีม คุณต้องเปิดใช้งานและกำหนดค่าการผสานรวมที่จำเป็น ดู/ตัวอย่าง
เรามีตัวอย่างมากมาย โปรดดูที่ /examples และเอกสารประกอบ
บันทึก
ไม่มีการเปิดใช้งานการรวมระบบตามค่าเริ่มต้น เนื่องจากบางรายการมีโค้ดจำนวนมาก เราขอแนะนำให้คุณเลือกการผสานรวมที่คุณต้องการ ตามแบบแผน แฟล็กจะมีชื่อเดียวกับการบูรณาการที่เป็นตัวแทน
สตรีมการจัดทำดัชนีเริ่มต้นด้วย Loader ที่ปล่อยโหนด ตัวอย่างเช่น ด้วย Fileloader แต่ละไฟล์จะเป็น Node.
จากนั้นคุณสามารถแบ่งส่วน ลูกเต๋า เพิ่ม และกรองโหนดได้ แต่ละขั้นตอนที่แตกต่างกันในไปป์ไลน์ต้องใช้คุณลักษณะที่แตกต่างกัน สิ่งนี้ทำให้สามารถขยายได้
โหนดมีเส้นทาง ชิ้นส่วน และข้อมูลเมตา ข้อมูลเมตาในปัจจุบันจะถูกคัดลอกไปเมื่อมีการแบ่งส่วนและฝัง อยู่เสมอ เมื่อใช้หม้อแปลง OpenAIEmbed
(impl Loader)
จุดเริ่มต้นของสตรีม สร้างและปล่อยโหนด(impl NodeCache)
กรองโหนดที่แคชไว้(impl Transformer)
แปลงโหนดและวางไว้บนสตรีม(impl BatchTransformer)
แปลงหลายโหนดและวางไว้บนสตรีม(impl ChunkerTransformer)
แปลงโหนดเดียวและส่งเสียงหลายโหนด(impl Storage)
จัดเก็บโหนดในแบ็กเอนด์ที่เก็บข้อมูล ซึ่งสามารถเชื่อมโยงกันได้ นอกจากนี้ยังมีการใช้หม้อแปลงทั่วไปหลายตัว พวกเขานำ Implementers ของ SimplePrompt
และ EmbedModel
มาทำสิ่งต่างๆ
คำเตือน
เนื่องจากประสิทธิภาพ การแบ่งส่วนก่อนเพิ่มข้อมูลเมตาทำให้เกิดข้อผิดพลาดขีดจำกัดอัตราบน OpenAI อย่างรวดเร็ว โดยเฉพาะกับรุ่นที่เร็วกว่า เช่น 3.5-เทอร์โบ จงตระหนัก.
สตรีมข้อความค้นหาเริ่มต้นด้วยกลยุทธ์การค้นหา ในไปป์ไลน์การสืบค้น Query
จะต้องผ่านหลายขั้นตอน หม้อแปลงไฟฟ้าและตัวดึงข้อมูลทำงานร่วมกันเพื่อให้ได้บริบทที่ถูกต้องในพรอมต์ก่อนที่จะสร้างคำตอบ หม้อแปลงไฟฟ้าและตัวดึงข้อมูลทำงานในขั้นตอนต่างๆ ของการสืบค้นผ่านเครื่องสถานะทั่วไป นอกจากนี้ กลยุทธ์การค้นหายังเป็นกลยุทธ์ทั่วไปในไปป์ไลน์ และรีทรีฟเวอร์จำเป็นต้องนำไปใช้สำหรับแต่ละกลยุทธ์โดยเฉพาะ
ฟังดูเหมือนมากแต่ tl&dr; ไปป์ไลน์การสืบค้นถูก พิมพ์อย่างสมบูรณ์และเข้มงวด
นอกจากนี้ ยังสามารถประเมินไปป์ไลน์การสืบค้นได้อีกด้วย คือโดย Ragas
เช่นเดียวกับไปป์ไลน์การจัดทำดัชนี แต่ละขั้นตอนจะอยู่ภายใต้คุณลักษณะที่เรียบง่าย และการปิดใช้คุณลักษณะเหล่านี้เช่นกัน
(กลับไปด้านบน)
ดูปัญหาที่เปิดอยู่สำหรับรายการคุณลักษณะที่นำเสนอทั้งหมด (และปัญหาที่ทราบ)
(กลับไปด้านบน)
หากคุณต้องการมีส่วนร่วมกับ Swiftide มากขึ้น มีคำถาม หรือต้องการพูดคุย คุณสามารถหาเราได้ที่ Discord
(กลับไปด้านบน)
Swiftide ยังอยู่ในช่วงเริ่มต้น และเราตระหนักดีว่าเราขาดคุณสมบัติสำหรับชุมชนในวงกว้าง ยินดีเป็นอย่างยิ่ง -
หากคุณมีความคิดที่ดี โปรดแยก repo และสร้างคำขอดึง คุณยังสามารถเปิดปัญหาด้วยแท็ก "การปรับปรุง" ได้อีกด้วย อย่าลืมให้ดาวแก่โครงการนี้ด้วย! ขอบคุณอีกครั้ง!
หากคุณเพียงต้องการมีส่วนร่วม (อวยพรคุณ!) โปรดดูปัญหาของเราหรือเข้าร่วมกับเราบน Discord
git checkout -b feature/AmazingFeature
)git commit -m 'feat: Add some AmazingFeature'
)git push origin feature/AmazingFeature
)ดูการมีส่วนร่วมสำหรับข้อมูลเพิ่มเติม
(กลับไปด้านบน)
เผยแพร่ภายใต้ใบอนุญาต MIT ดู LICENSE
สำหรับข้อมูลเพิ่มเติม
(กลับไปด้านบน)