Build5Nines.SharpVector
هي مكتبة قاعدة بيانات متجهة في الذاكرة مصممة لتطبيقات .NET. يسمح لك بتخزين البيانات النصية والبحث فيها وإدارتها باستخدام تمثيلات المتجهات. المكتبة قابلة للتخصيص والتوسيع، مما يتيح الدعم لأساليب مقارنة المتجهات المختلفة، وتقنيات المعالجة المسبقة، واستراتيجيات التوجيه.
تُستخدم قواعد بيانات المتجهات مع حلول الذكاء الاصطناعي التوليدية التي تعمل على زيادة LLM (نموذج اللغة الكبير) مع القدرة على تحميل بيانات السياق الإضافية باستخدام موجه الذكاء الاصطناعي باستخدام نمط تصميم RAG (الجيل المعزز للاسترجاع).
على الرغم من وجود الكثير من قواعد البيانات الكبيرة التي يمكن استخدامها لإنشاء قواعد بيانات متجهة (مثل Azure CosmosDB، وPostgreSQL w/pgvector، وAzure AI Search، وElasticsearch، والمزيد)، لا توجد خيارات كثيرة لقاعدة بيانات متجهة خفيفة الوزن يمكن تضمينها في أي تطبيق .NET.
يوفر مشروع Build5Nines SharpVector قاعدة بيانات متجهة خفيفة الوزن في الذاكرة للاستخدام في أي تطبيق .NET.
"بالنسبة لقاعدة بيانات المتجهات الموجودة في الذاكرة، فإننا نستخدم Build5Nines.SharpVector، وهو مشروع ممتاز مفتوح المصدر بواسطة Chris Pietschmann. يجعل SharpVector من السهل تخزين البيانات الموجهة واسترجاعها، مما يجعله خيارًا مثاليًا لتطبيق RAG النموذجي الخاص بنا."
— توليكا تشودري، مديرة المنتج الرئيسية في Microsoft لخدمة Azure App Service
توفر قواعد بيانات المتجهات الموجودة في الذاكرة مثل Build5Nines.SharpVector
العديد من المزايا مقارنة بخادم قاعدة بيانات المتجهات التقليدية، لا سيما في السيناريوهات التي قد تتطلب أداءً عاليًا وزمن وصول منخفض واستخدامًا فعالاً للموارد.
فيما يلي قائمة بالعديد من سيناريوهات الاستخدام حيث يمكن أن يكون Build5Nines.SharpVector
مفيدًا:
فيما يلي بعض الروابط التعليمية المفيدة مع وثائق وأمثلة إضافية حول استخدام Build5Nines.SharpVector
في مشاريعك الخاصة:
تتوفر مكتبة Build5Nines.SharpVector
كحزمة Nuget لتضمينها بسهولة في مشاريع .NET الخاصة بك:
dotnet add package Build5Nines.SharpVector
يمكنك مشاهدته على Nuget.org هنا: https://www.nuget.org/packages/Build5Nines.SharpVector/
للحصول على أقصى قدر من التوافق، تم إنشاء مكتبة Build5Nines.SharpVector
باستخدام أي تبعيات خارجية بخلاف ما هو متاح من .NET، وهي مصممة لاستهداف .NET 6 والإصدارات الأحدث.
كما ترون في المثال التالي لاستخدام مكتبة Build5Nines.SharpVector
، في سطرين فقط من التعليمات البرمجية، يمكنك تضمين قاعدة بيانات Vector في الذاكرة في أي تطبيق .NET:
// Create a Vector Database with metadata of type string
var vdb = new BasicMemoryVectorDatabase ( ) ;
// The Metadata is declared using generics, so you can store whatever data you need there.
// Load Vector Database with some sample text data
// Text is the movie description, and Metadata is the movie title with release year in this example
vdb . AddText ( " Iron Man (2008) is a Marvel Studios action, adventure, and sci-fi movie about Tony Stark (Robert Downey Jr.), a billionaire inventor and weapons developer who is kidnapped by terrorists and forced to build a weapon. Instead, Tony uses his ingenuity to build a high-tech suit of armor and escape, becoming the superhero Iron Man. He then returns to the United States to refine the suit and use it to fight crime and terrorism. " , " Iron Man (2008) " ) ;
vdb . AddText ( " The Lion King is a 1994 Disney animated film about a young lion cub named Simba who is the heir to the throne of an African savanna. " , " The Lion King (1994) " ) ;
vdb . AddText ( " Aladdin is a 2019 live-action Disney adaptation of the 1992 animated classic of the same name about a street urchin who finds a magic lamp and uses a genie's wishes to become a prince so he can marry Princess Jasmine. " , " Alladin (2019) " ) ;
vdb . AddText ( " The Little Mermaid is a 2023 live-action adaptation of Disney's 1989 animated film of the same name. The movie is about Ariel, the youngest of King Triton's daughters, who is fascinated by the human world and falls in love with Prince Eric. " , " The Little Mermaid " ) ;
vdb . AddText ( " Frozen is a 2013 Disney movie about a fearless optimist named Anna who sets off on a journey to find her sister Elsa, whose icy powers have trapped their kingdom in eternal winter. " , " Frozen (2013) " ) ;
// Perform a Vector Search
var result = vdb . Search ( newPrompt , pageCount : 5 ) ; // return the first 5 results
if ( result . HasResults )
{
Console . WriteLine ( " Similar Text Found: " ) ;
foreach ( var item in result . Texts )
{
Console . WriteLine ( item . Metadata ) ;
Console . WriteLine ( item . Text ) ;
}
}
تستخدم فئة Build5Nines.SharpVector.BasicMemoryVectorDatabase
إستراتيجية توجيه حقيبة الكلمات، مع تشابه جيب التمام، ومخزن مفردات القاموس، ومعالج نص أساسي. تحتوي المكتبة على فئات عامة والكثير من نقاط الامتداد لإنشاء تطبيقات قاعدة بيانات متجهة مخصصة معها إذا لزم الأمر.
أيضًا، يمكن استخدام TextDataLoader
للمساعدة في تحميل المستندات النصية إلى قاعدة بيانات المتجهات مع دعم طرق تقسيم النص المختلفة المتعددة:
/// Paragraph Chunking
var loader = new TextDataLoader < int , string > ( vdb ) ;
loader . AddDocument ( document , new TextChunkingOptions < string >
{
Method = TextChunkingMethod . Paragraph ,
RetrieveMetadata = ( chunk ) => {
// add some basic metadata since this can't be null
return " { chuckSize: " " + chunk . Length + " " } " ;
}
} ) ;
/// Sentence Chunking
var loader = new TextDataLoader < int , string > ( vdb ) ;
loader . AddDocument ( document , new TextChunkingOptions < string >
{
Method = TextChunkingMethod . Sentence ,
RetrieveMetadata = ( chunk ) => {
// add some basic metadata since this can't be null
return " { chuckSize: " " + chunk . Length + " " } " ;
}
} ) ;
/// Fixed Length Chunking
var loader = new TextDataLoader < int , string > ( vdb ) ;
loader . AddDocument ( document , new TextChunkingOptions < string >
{
Method = TextChunkingMethod . FixedLength ,
ChunkSize = 150 ,
RetrieveMetadata = ( chunk ) => {
// add some basic metadata since this can't be null
return " { chuckSize: " " + chunk . Length + " " } " ;
}
} ) ;
يقبل RetrieveMetadata
وظيفة lambda التي يمكن استخدامها لتحديد البيانات التعريفية للخراطيش بسهولة أثناء تحميلها.
يعرض نموذج تطبيق وحدة التحكم في هذا الريبو مثالًا لاستخدام Build5Nines.SharpVector.dll
يقوم بتحميل قائمة بعناوين الأفلام وأوصافها من ملف JSON، ثم يسمح للمستخدم بكتابة مطالبات للبحث في قاعدة البيانات وإرجاع أفضل التطابقات.
فيما يلي لقطة شاشة لتطبيق وحدة التحكم الاختبارية قيد التشغيل:
BasicMemoryVectorDatabase
الآن كلاً من العمليات المتزامنة وغير المتزامنة.Async
بشكل جيد.Async
من الفئات لدعم تعدد الخيوط.AddText()
و .AddTextAsync()
IVectorSimilarityCalculator
to IVectorComparer
و CosineVectorSimilarityCalculatorAsync
to CosineSimilarityVectorComparerAsync
EuclideanDistanceVectorComparerAsync
جديدMemoryVectorDatabase
بحيث لم يعد يتطلب نوع TId
العام غير المستخدمVectorSimilarity
Similarity
إلى VectorComparison
TextDataLoader
لتوفير الدعم لطرق مختلفة لتقطيع النص عند تحميل المستندات في قاعدة بيانات المتجهات.BasicMemoryVectorDatabase
باعتبارها تطبيقات قاعدة بيانات المتجهات الأساسية التي تستخدم استراتيجية توجيه حقيبة الكلمات، مع تشابه جيب التمام، ومخزن مفردات القاموس، ومعالج نص أساسي.VectorTextResultItem.Similarity
بحيث يمكن للكود المستهلك فحص تشابه النص في نتائج بحث المتجهات..Search
لدعم صفحات نتائج البحث ودعم العتبة لمقارنة التشابهتتم صيانة مشروع Build5Nines SharpVector بواسطة كريس بيتشمان، Microsoft MVP، سفير HashiCorp.